Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 Navigation is too slow (1535 and lower)
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

maxim2000
Ketchup Master

68 Posts

Posted - Oct 05 2006 :  03:54:58 AM  Show Profile  Reply with Quote
I work with VS6.0
I have a problem with navigation in large files (e.g. interface .h file). I can't move mouse hover the code or press a keyboard button. It results a pause in about 1-5 sec, then a very large tooltip appears and hides immediately (tooltip might absent). It is not ease to say something about the tooltip's content (it appears for a very short interval). Sometimes it isnt tooltip, its a large context menu with suggestions that are not suitable to the code at all.
Is it known bug (or feature )?

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Oct 05 2006 :  11:11:38 AM  Show Profile  Reply with Quote
does this happen in all large files?
how large, approximately, is this file?
does this file have a lot of template code in it?

this is certainly not normal. we have had similar problems with certain heavy template C++ code, but i have not seen any reports of this for a while now.

is there any chance of getting a copy of the file to test? this is always a long shot, but worth asking

zen is the art of being at one with the two'ness
Go to Top of Page

maxim2000
Ketchup Master

68 Posts

Posted - Oct 06 2006 :  09:07:11 AM  Show Profile  Reply with Quote
Sometimes size of the file doesn't matter (but for large files it happens always). I think the slower is a large amount of template specializations code.
We use COM and we have a large amount of interface files. Each interface file consists of interfaces declarations. The interface declaration is like this:

INTERFACE_DECL(ICustom)
{
virtual HRESULT __stdcall Customize() PURE;
/*...*/
};

The macro INTERFACE_DECL is expanded to
#define INTERFACE_DECL(interface_name)\ interface interface_name;\ INTERFACE_PTR(interface_name)\ interface interface_name : public IUnknown

Finally, the macro INTERFACE_PTR is expanded to specialization of 2 template classes. The classes are smart pointer and allocator. (Allocator class is specialized not only for interfaces but for most of structures too)

It seems that these classes are guilty in the slowing down. Because content of the context menu (see prev. post) is different specializations of that 2 classes. And these specializations are not suitable for the current file at all.

So, we have so much specializations (I can't count them :)) of these template classes (especially class CAllocator<>) that VA can't cope with them.

I've tried to make an example code for you, but VA worked with the code fine. Maybe it happened due to a little amount of specializations in the code. I'll add more ones if the example is still needed (maybe you'll say: ho! everything is clear as noonday :)).
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Oct 07 2006 :  1:46:58 PM  Show Profile  Reply with Quote
I can understand why this might slow VA down. in your test file can you simply copy / paste a block of code that uses these templates and macro's? this should be a quick and easy way of making a longer file, that causes VA problems. the fact the code is duplicated should not matter.

zen is the art of being at one with the two'ness
Go to Top of Page

maxim2000
Ketchup Master

68 Posts

Posted - Oct 09 2006 :  08:17:56 AM  Show Profile  Reply with Quote
I've made a simple test project (http://maxim2000.at.tut.by/TestVASlowingDown.zip). It includes 100 interface files, that specialize template from a common file. The files are equal. The effect of slowing down is depended on amount of files included in the project. You can generate more files using copy.bat of the archive. But after 500 files VA could't parse them (it parses a file per second and I hadn't wait for him). To get the slowing simple press arrow down on each line repeatedly (not press once to make cursor running). The light slowing appears after a screen passed (near ICustom18). The large tooltip blinks by mouse wheeling over the code. By increasing amount of files in the project you'll see it clearer.

The real slowing down on our projects is much deeper. But I hope the reasons are the same.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Oct 09 2006 :  2:33:02 PM  Show Profile  Reply with Quote
I am seeing the same very slow scrolling you report. running task manager shows that the CPU is often going flat out, which explains why everything is so slow. thank you for the very clear test project, it makes things a lot easier

I tried 300 files and the scrolling is a lot slower.

I am not seeing any flashing tooltips though. Is the mouse pointer over your code when you are scrolling? I suspect the mouse moves over, and then off of something that generates a tooltip, which then appears and disappears.

case=2913

zen is the art of being at one with the two'ness
Go to Top of Page

maxim2000
Ketchup Master

68 Posts

Posted - Oct 10 2006 :  11:04:30 AM  Show Profile  Reply with Quote
I'm happy to give you a trouble :)

It is not ease to catch the tooltip, but try to scroll through the text by scrolling wheel down and up. Switching between applications, opening a new interface file and making CPU working could also help.

I've frozen some tooltips.
http://maxim2000.at.tut.by/tooltip.jpg
http://maxim2000.at.tut.by/tooltip2.jpg
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Oct 10 2006 :  3:07:30 PM  Show Profile  Reply with Quote
can you produce these very tall tooltips on demand, without scrolling quickly? I have seen a couple of tooltips pop up and disappear very quickly, but so far I cannot reproduce it on demand. I am using the 100 file solution.

none of the tooltips I can make appear on demand are longer than 2 lines.

i suspect the second screen shot is because the CPU was under very heavy load, so it was having problems redrawing the screen.

zen is the art of being at one with the two'ness
Go to Top of Page

maxim2000
Ketchup Master

68 Posts

Posted - Oct 11 2006 :  04:35:53 AM  Show Profile  Reply with Quote
I have exactly the same behaviour you describe (on our test project).

As to the second screen shot, maybe the top of the tooltip was broken by my screen recorder program. So, redrawing unlikely gives trouble. Perhaps there is a problem in idle (or some mouse) handler, when tooltip is forming. It collects strings from objects under mouse pointer, but it doesn't know when to stop the collecting (assumed there is only a object). But it's only a guess.

Anyway, if the slowing down trouble is resolved CPU won't be loaded and tooltip won't be caused :)
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Dec 19 2006 :  9:16:52 PM  Show Profile  Reply with Quote
case=2913 is fixed in build 1543
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000