* [PATCH] Bug 12705: Extremely poor performance when printing large arrays
@ 2011-04-26 17:26 Andrew Gontarek
2011-04-29 17:41 ` Tom Tromey
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Gontarek @ 2011-04-26 17:26 UTC (permalink / raw)
To: gdb-patches
Hello,
I noticed that when I wanted to print out a very large array, the
performance
was unbearably slow. This can be observed by setting print repeats and print
elements to 0 (unlimited) and then attempting to print a large array.
set print repeats 0
set print elements 0
I discovered this behavior while attempting to directly parse a very large
array's value directly using gdb/mi with the command
-data-evaluate-expression.
The following is a patch which fixes this issue:
Index: valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/valprint.c,v
retrieving revision 1.110
diff -c -p -r1.110 valprint.c
*** valprint.c 14 Feb 2011 11:35:45 -0000 1.110
--- valprint.c 26 Apr 2011 16:57:39 -0000
*************** val_print_array_elements (struct type *t
*** 1247,1261 ****
rep1 = i + 1;
reps = 1;
! while (rep1 < len
&& value_available_contents_eq (val,
embedded_offset + i *
eltlen,
val,
embedded_offset + rep1 *
eltlen,
eltlen))
! {
! ++reps;
! ++rep1;
}
if (reps > options->repeat_count_threshold)
--- 1247,1267 ----
rep1 = i + 1;
reps = 1;
!
! /* Only check for reps if repeat_count_threshold is not set to
! UINT_MAX (unlimited) */
! if (options->repeat_count_threshold < UINT_MAX)
! {
! while (rep1 < len
&& value_available_contents_eq (val,
embedded_offset + i * eltlen,
val,
embedded_offset + rep1 *
eltlen,
eltlen))
! {
! ++reps;
! ++rep1;
! }
}
if (reps > options->repeat_count_threshold)
Index: ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.12951
diff -c -p -r1.12951 ChangeLog
*** ChangeLog 26 Apr 2011 15:40:56 -0000 1.12951
--- ChangeLog 26 Apr 2011 17:13:39 -0000
***************
*** 1,3 ****
--- 1,9 ----
+ 2011-04-26 Andrew Gontarek <andrewg@cray.com>
+
+ * valprint.c (val_print_array_elements): Fixed poor performance
+ of printing very large arrays with repeat_count_threshold set
+ to unlimited. New comment.
+
2011-04-26 Michael Walle <michael@walle.cc>
* remote.c (remote_start_remote): Ack packet after sending the
--
Andrew Gontarek
PE debugger development at CRAY
Ph: 651-605-9176
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Bug 12705: Extremely poor performance when printing large arrays
2011-04-26 17:26 [PATCH] Bug 12705: Extremely poor performance when printing large arrays Andrew Gontarek
@ 2011-04-29 17:41 ` Tom Tromey
2011-04-29 19:15 ` Tom Tromey
0 siblings, 1 reply; 3+ messages in thread
From: Tom Tromey @ 2011-04-29 17:41 UTC (permalink / raw)
To: Andrew Gontarek; +Cc: gdb-patches
>>>>> "Andrew" == Andrew Gontarek <andrewg@cray.com> writes:
Andrew> I noticed that when I wanted to print out a very large array,
Andrew> the performance was unbearably slow. This can be observed by
Andrew> setting print repeats and print elements to 0 (unlimited) and
Andrew> then attempting to print a large array.
This patch looks good.
The patch itself was mangled somehow, maybe your MUA.
I think this is small enough that we can accept it without a copyright
assignment. If you plan to submit more patches, though, contact me to
get started on the paperwork.
I am running this through our tester, and if it works ok I am going to
check it in. It looks safe enough for 7.3 as well.
Tom
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Bug 12705: Extremely poor performance when printing large arrays
2011-04-29 17:41 ` Tom Tromey
@ 2011-04-29 19:15 ` Tom Tromey
0 siblings, 0 replies; 3+ messages in thread
From: Tom Tromey @ 2011-04-29 19:15 UTC (permalink / raw)
To: Andrew Gontarek; +Cc: gdb-patches
>>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
Tom> I am running this through our tester, and if it works ok I am going to
Tom> check it in. It looks safe enough for 7.3 as well.
I am checking it in now.
Tom
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-04-29 19:15 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-04-26 17:26 [PATCH] Bug 12705: Extremely poor performance when printing large arrays Andrew Gontarek
2011-04-29 17:41 ` Tom Tromey
2011-04-29 19:15 ` Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox