SpeedCop

Microsoft Free

SpeedCop analyzes your program and advises on how to make it run faster.

Microsoft
(1) Review
Visual Studio
2013
Download (2,138)
12/9/2013
1.1
View
E-mail Twitter del.icio.us Digg Facebook
Add to favorites
Description
Reviews (1)
Q and A (3)
Sign in to write a review
Sort by:

by Evgenii Golubev | November 28 2013

Must-have extension for those concerned with application performance.

A few suggestions/ideas:

1) display output in Error List window as warnings;
2) allow us to toggle specific warnings based on reason code (some just indicate that vectorization provides no benefit);
3) give us more hits as to why loop wasn't vectorized as opposed to just displaying reason code;
4) having a possibility to hide warnings for specific loop would also be useful (or, perhaps rather enable it only for specific parts of code).

Eric Battalio December 03 2013
| Edit |
Delete

Thanks for the feedback, Evgenii. For #1, the choice was deliberate as failing to vectorize a loop is less severe than errors or warnings.

Sign in to start a discussion


  • Error List is empty
    1 Posts | Last post February 26, 2014
    • Seems like it does add the compiler flag but the error list is empty nonetheless. No clue how to find out why.
      ActivityReport is empty. Doesn't matter if it's Win32 or x64.
      
      I'm not sure if it worked before. I installed Update 1 since then at least.
  • strcmp(Config, "Release")
    3 Posts | Last post December 05, 2013
    • Does the extension do something as trivial as checking if the Project Configuration *equals* "Release" instead of *contains*? I don't get output on projects which have a configuration name where Release is a substring of the config name. Eg "ReleaseDedi" doesn't provide output, but "Release" does.
      
      If this is the case:
      Internally, is there not a more consistent way to check for the availability of diagnostic information? I'm sure there are people who have builds that are release configs but don't have release in the config title (or use an abbreviation like "Rel").
    • I just realized SpeedCop directly modifies the vcxproj file (only because it is source controlled, and I was checking in changes) to add the /Qvec-report flag, which is why I was only getting output on Release builds (specifically, "Release|Win32").
      
      I manually added this flag to project's common cpp .props file and everything seems to check out now (SpeedCop doesn't manually modify the vcxproj now either with it defined in an imported .props)
      
      Great extension, looking forward to it being fleshed out :)
    • Yeah most probably. The correct way would be to search all configurations for the required optimization parameter instead.
      It might also want to check the chosen platform toolset for /QVec-report support.
  • Bundle with VS by default
    4 Posts | Last post November 19, 2013
    • Fantastic extension! Why isn't it a part of official compiler or static analysis tools, though? It could warn us by default when specific flags are set.
    • Hi Evgenii,
      
      Thanks for your feedback, glad you like it =) This version of SpeedCop is very much a prototype, and we wanted to just get it out there to you guys and see if you guys liked it (or if you didn't). If there seems to be enough support for the way that it's currently working, we'll look into making significant improvements to the tool!
    • Hi,
      
      I'm just trying it out now, but while it's building I was wondering if you had a little more info on how it works. Specifically, is it using the same compilers as before with an extra flag to show the info (it's certainly spewing "info" messages I've not seen before, does it compile at the same speed as before, etc? I'd like to know if there's any negatives for having this installed on a PC.
      
      Is there also a way to supress some loops from SpeedCop (in the same way you could supress CodeAnalysis warnings). I'm not sure yet if I want/need to do that, but it seemed like it may be useful depending on whether there's much you can do to make loops better (at least in some sort of timeframe)
    • SpeedCop uses the regular compiler.  As you guessed, it simply sets a flag (/Qvec-report:2) asking the compiler to emit diagnostics.  The compiler already did the analysis (for a Release build) in its attempt to vectorize a loop, so the overhead of emitting the diagnostic is tiny.  So no negatives to installing the SpeedCop add-in.
      
      In terms of filtering the diagnostics - not yet.  We recognize this would be useful - please send us any feedback on the type of filtering you would find useful: eg, by-Project, by-compiland, by-function, by-loop, etc.