Wednesday, January 10, 2007

VC80

I'm happy to share some thoughts. Please consider the following to be my personal point of view after only a few days of testing. Other's opinions might differ.

Pro V8:
* Compiler works much faster
* new Debugger features:
.. the "inline quickwatch" when pointing at a structure or object in the source
.. the ability to show the contents of std classes in a readable way.
* Intellisense improvements:
.. does not crash occasionally on large projects
.. does not bail out occasionally on large projects refusing to show anything until VC is restarted.
.. does include system headers like e.g. DirectX
.. does show global variables in namespaces.
.. seems to handle template classes way better
.. marks source that is not compiled due to preprocessor magic. Very helpful, especially when integrating third party source.

Contra V8:
* "Static" intellisense.

Seems like the precise and more complete infos intellisense can offer now came with a price: most of the changes on a source or header arent detected until the next successful build or a VC restart. I switched to a header, corrected a typo in a member var, switched back to implementation and it took about half an hour till intellisense recognised the new name. Adding a new function prototype to a header and then trying to implement it is killing intellisense: you're typing all the stuff completely on your own. After restarting VC and letting Intellisense update its database I tried to continue implementing that function, but it kept switching between the correct scope and "(Global scope)" in intervals of about 20 seconds, unable to show any member function or variable of that class. Intellisense is one of the most important features of VC in my opinion. And despite all the cool new features the new intellisense is just too unreliable for my taste. Especially when you're trying to actually produce new code, not just edit existing code.

Note: I left the function syntactically correct. I'm already used to always add a closing bracket as soon as I type an opening one and then inserting the actual content in the middle. It helps Intellisense2003 to keep track. It doesn't make any difference for Intellisense2005.

* Executable speed.

I haven't done any benchmark or anything else the audience might call "reliable". I just converted the project to VC8 and recompiled it. My personal statistic: Debug 14fps (vs 20 before), optimized Debug 50 fps (vs 90 in VC7), Release 90 fps (vs 115 before). As I said, the tests are not representative or valid for others, but they're important for me. At least the release configuration, the rest is a nice-to-have.

I read the forums here and found some hints, adding defines to silence all the "deprecated" warnings I don't care for and trying to regain some of the speed. Yet to no avail. It might be a degraded compiler, though, much like the "student" version of VC7, where some optimisations were lacking. And I'm pretty sure with some time and a close look at all the new options there might be some further improvement in reach.

* Some features lacking

That's not a point exactly as I compare VC8 Express Edition against the full blown VS2003 Enterprise Edition my boss paid for me. I never used most of the stuff included there anyways. But there are some small details that indeed do hurt when they're missing: Macro support for example. I haven't found a detailed list what exactly the differences are between the express version and the larger ones so I can only guess what else I'll be missing then.

In the end we decided to stay at VC7. We know what twists are needed to work around some of intellisense's problems, others we got used to. We're currently evaluating Visual Assist and if it proves to be useful it is as much of an improvement as I have ever hoped VC8 would bring.

I hope you read this statement as a personal opinion. It's just a hint what I expected to find in the new version and it is in no way meant to be a general judgement. No offence intended.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home