| View previous topic :: View next topic |
| Author |
Message |
Mark Pearce
Joined: 12 Jan 2012 Posts: 61 Location: London, England
|
Post subject: Re: C# Performance Posted: Wed Feb 08, 2012 9:30 am |
|
|
| Richard Allbert wrote: |
| Finding the boxing means looking at the heap allocations, correct? |
Best way is to use ildasm to look at the IL - look for the "box" operation.
There are lots of ways that a struct can be inadvertantly boxed. Perhaps the most common ways are using Console.WriteLine without a custom ToString(), and also where a struct is a member of a parent class. Here are some related links:
http://stackoverflow.com/questions/3032750/structs-interfaces-and-boxing
http://stackoverflow.com/questions/1249086/boxing-on-structs-when-calling-tostring
http://www.codeguru.com/csharp/csharp/cs_syntax/article.php/c5883
http://stackoverflow.com/questions/1917209/what-are-the-performance-implications-of-passing-structs-in-an-array-by-referenc
http://stackoverflow.com/questions/6163335/how-to-store-structs-of-different-types-without-boxing
| Richard Allbert wrote: |
If I run the 'struct Move' version for the depth 4 mirrored, approx 22MB of heap allocations occur, with 260kB relocated and Final heap 1.2MB. So a lot of creation / destruction
If I run the 'class Move' version, there are 11MB of Heap allocations, 174kB relocated and Final Heap Bytes 495kB. So half the allocations.... |
That could definitely explain the speed-up when converting. It looks like the struct is being boxed and possibly copied as well. We should be able to remove this, at which point the related heap allocations will go to zero and you should see another speed-up of maybe 20-40%.
In addition, what happens to the speed when you define Move as a class, and then store in an array rather than a List? Does that also give you a small speed-up? _________________ Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Chess programmers combine theory and practice: Nothing works and they don't know why. |
|
| Back to top |
|
 |
|
| Subject |
Author |
Date/Time |
C# Performance |
Richard Allbert |
Fri Jan 27, 2012 8:41 pm |
Re: C# Performance |
Kevin Hearn |
Fri Jan 27, 2012 9:01 pm |
Re: C# Performance |
Richard Allbert |
Fri Jan 27, 2012 9:13 pm |
Re: C# Performance |
Gary |
Fri Jan 27, 2012 9:07 pm |
Re: C# Performance |
Richard Allbert |
Fri Jan 27, 2012 9:17 pm |
Re: C# Performance |
Gary |
Fri Jan 27, 2012 10:09 pm |
Re: C# Performance |
Mark Pearce |
Sat Jan 28, 2012 12:59 am |
Re: C# Performance |
Richard Allbert |
Sat Jan 28, 2012 8:44 am |
Re: C# Performance |
Sven Schüle |
Sat Jan 28, 2012 9:48 am |
Re: C# Performance |
Richard Allbert |
Sat Jan 28, 2012 10:25 am |
Re: C# Performance |
Richard Allbert |
Sat Jan 28, 2012 11:41 am |
Re: C# Performance |
Mark Pearce |
Sat Jan 28, 2012 11:44 am |
Re: C# Performance |
Richard Allbert |
Sat Jan 28, 2012 10:31 am |
Re: C# Performance |
Marco Costalba |
Sat Jan 28, 2012 1:09 pm |
Re: C# Performance |
Lucas Braesch |
Sat Jan 28, 2012 1:52 pm |
Re: C# Performance |
Richard Allbert |
Sat Jan 28, 2012 2:05 pm |
Re: C# Performance |
Marco Costalba |
Sat Jan 28, 2012 2:30 pm |
Re: C# Performance |
Richard Allbert |
Sat Jan 28, 2012 5:22 pm |
Re: C# Performance |
Sven Schüle |
Sat Jan 28, 2012 6:02 pm |
Re: C# Performance |
Richard Allbert |
Sat Jan 28, 2012 6:12 pm |
Re: C# Performance |
Robert Purves |
Sat Jan 28, 2012 10:17 pm |
Re: C# Performance |
Marco Costalba |
Sat Jan 28, 2012 10:25 pm |
Re: C# Performance |
Thomas Petzke |
Sat Jan 28, 2012 4:21 pm |
Re: C# Performance |
Richard Allbert |
Mon Jan 30, 2012 12:52 pm |
Re: C# Performance |
Marco Costalba |
Mon Jan 30, 2012 6:37 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 01, 2012 6:55 pm |
Re: C# Performance |
Marco Costalba |
Wed Feb 01, 2012 7:18 pm |
Re: C# Performance |
Mark Pearce |
Mon Jan 30, 2012 9:55 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 01, 2012 6:57 pm |
Re: C# Performance |
Mark Pearce |
Wed Feb 01, 2012 9:59 pm |
Re: C# Performance |
Mark Pearce |
Fri Feb 03, 2012 1:34 am |
Re: C# Performance |
Robert Purves |
Fri Feb 03, 2012 3:26 am |
Re: C# Performance |
Mark Pearce |
Fri Feb 03, 2012 9:28 am |
Re: C# Performance |
Sven Schüle |
Fri Feb 03, 2012 9:45 am |
Re: C# Performance |
Mark Pearce |
Sat Feb 04, 2012 7:57 pm |
Re: C# Performance |
Sven Schüle |
Sat Feb 04, 2012 10:36 pm |
Re: C# Performance |
Mark Pearce |
Sat Feb 04, 2012 11:49 pm |
Re: C# Performance |
Sven Schüle |
Sun Feb 05, 2012 12:51 am |
Re: C# Performance |
Mark Pearce |
Sun Feb 05, 2012 1:05 am |
Re: C# Performance |
Sven Schüle |
Fri Feb 03, 2012 10:04 am |
Re: C# Performance |
Mark Pearce |
Fri Feb 03, 2012 11:40 am |
Re: C# Performance |
Richard Allbert |
Sat Feb 04, 2012 7:10 pm |
Re: C# Performance |
Lucas Braesch |
Sat Feb 04, 2012 8:31 pm |
Re: C# Performance |
Mark Pearce |
Sat Feb 04, 2012 10:23 pm |
Re: C# Performance |
Mark Pearce |
Sun Feb 05, 2012 12:23 am |
Re: C# Performance |
Lucas Braesch |
Sun Feb 05, 2012 2:57 am |
Re: C# Performance |
Mark Pearce |
Sun Feb 05, 2012 11:40 am |
Re: C# Performance |
Richard Allbert |
Mon Feb 06, 2012 6:29 pm |
Re: C# Performance |
Richard Allbert |
Mon Feb 06, 2012 6:29 pm |
Re: C# Performance |
Richard Allbert |
Mon Feb 06, 2012 6:30 pm |
Re: C# Performance |
Richard Allbert |
Mon Feb 06, 2012 6:45 pm |
Re: C# Performance |
Gary |
Mon Feb 06, 2012 7:00 pm |
Re: C# Performance |
Richard Allbert |
Mon Feb 06, 2012 7:12 pm |
Re: C# Performance |
Sven Schüle |
Mon Feb 06, 2012 10:50 pm |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 9:52 am |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 9:53 am |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 9:53 am |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 9:54 am |
Re: C# Performance |
Mark Pearce |
Tue Feb 07, 2012 1:59 pm |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 2:54 pm |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 3:06 pm |
Re: C# Performance |
Mark Pearce |
Tue Feb 07, 2012 5:17 pm |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 6:10 pm |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 6:20 pm |
Re: C# Performance |
Mark Pearce |
Tue Feb 07, 2012 8:02 pm |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 9:19 pm |
Re: C# Performance |
Mark Pearce |
Tue Feb 07, 2012 10:20 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 7:47 am |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 7:57 am |
Re: C# Performance |
Sven Schüle |
Wed Feb 08, 2012 10:09 am |
Re: C# Performance |
Mark Pearce |
Wed Feb 08, 2012 12:16 pm |
Re: C# Performance |
Vincent Diepeveen |
Sat Feb 18, 2012 10:03 pm |
Re: C# Performance |
Mark Pearce |
Wed Feb 08, 2012 9:30 am |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 12:02 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 12:34 pm |
Re: C# Performance |
Mark Pearce |
Wed Feb 08, 2012 12:56 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 1:18 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 2:30 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 2:34 pm |
Re: C# Performance |
Mark Pearce |
Wed Feb 08, 2012 3:02 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 3:27 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 3:29 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 3:59 pm |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 4:04 pm |
Re: C# Performance |
Mark Pearce |
Wed Feb 08, 2012 6:07 pm |
Re: C# Performance |
Richard Allbert |
Thu Feb 09, 2012 10:41 am |
Re: C# Performance |
Mark Pearce |
Thu Feb 09, 2012 1:47 pm |
Re: C# Performance |
Richard Allbert |
Thu Feb 09, 2012 2:56 pm |
Re: C# Performance |
Mark Pearce |
Sat Feb 11, 2012 4:41 pm |
Re: C# Performance |
Richard Allbert |
Sun Feb 12, 2012 8:34 am |
Re: C# Performance |
Lucas Braesch |
Sun Feb 12, 2012 10:52 am |
Re: C# Performance |
Richard Allbert |
Sun Feb 12, 2012 12:26 pm |
Re: C# Performance |
Ron Murawski |
Mon Feb 13, 2012 5:26 am |
Re: C# Performance |
Lucas Braesch |
Mon Feb 13, 2012 5:52 am |
Re: C# Performance |
Richard Allbert |
Mon Feb 13, 2012 6:27 am |
Re: C# Performance |
Ron Murawski |
Tue Feb 14, 2012 6:38 am |
Re: C# Performance |
Lucas Braesch |
Tue Feb 14, 2012 8:22 am |
Re: C# Performance |
Mark Pearce |
Tue Feb 14, 2012 11:30 pm |
Re: C# Performance |
Richard Allbert |
Thu Feb 16, 2012 10:49 am |
Re: C# Performance |
Mark Pearce |
Sat Feb 18, 2012 12:34 pm |
Re: C# Performance |
Richard Allbert |
Mon Feb 20, 2012 9:19 pm |
Re: C# Performance |
Mark Pearce |
Tue Feb 21, 2012 8:33 am |
Re: C# Performance |
Richard Allbert |
Tue Feb 21, 2012 6:37 pm |
Re: C# Performance |
Vincent Diepeveen |
Sat Feb 18, 2012 10:19 pm |
Re: C# Performance |
Mark Pearce |
Sun Feb 12, 2012 2:01 pm |
Re: C# Performance |
Richard Allbert |
Sun Feb 12, 2012 4:40 pm |
Re: C# Performance |
Vincent Diepeveen |
Sat Feb 18, 2012 10:06 pm |
Re: C# Performance |
Mark Pearce |
Sun Feb 19, 2012 1:01 pm |
Re: C# Performance |
Vincent Diepeveen |
Sun Feb 19, 2012 5:25 pm |
Re: C# Performance |
Mark Pearce |
Sun Feb 19, 2012 7:04 pm |
Re: C# Performance |
Vincent Diepeveen |
Sun Feb 19, 2012 9:17 pm |
Re: C# Performance |
Mark Pearce |
Sun Feb 19, 2012 11:33 pm |
Re: C# Performance |
Richard Allbert |
Sun Feb 19, 2012 9:22 pm |
Re: C# Performance |
Vincent Diepeveen |
Sun Feb 19, 2012 9:32 pm |
Re: C# Performance |
Vincent Diepeveen |
Sun Feb 19, 2012 9:37 pm |
Re: C# Performance |
Vincent Diepeveen |
Sun Feb 19, 2012 10:06 pm |
Re: C# Performance |
Lucas Braesch |
Wed Feb 08, 2012 10:56 am |
Re: C# Performance |
Mark Pearce |
Wed Feb 08, 2012 11:30 am |
Re: C# Performance |
Richard Allbert |
Wed Feb 08, 2012 12:04 pm |
Re: C# Performance |
Tony Soares |
Tue Feb 07, 2012 3:47 am |
Re: C# Performance |
Richard Allbert |
Tue Feb 07, 2012 9:55 am |
Re: C# Performance |
Mark Pearce |
Sat Feb 04, 2012 8:37 pm |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|