Speedtesting Verge
Displaying 1-11 of 11 total.
1
Please enter a numerical value for the importance of this sticky.
Enter 0 to unsticky.
adderd

I've done a variety of speedups to verge. It would be cool if people could download the zip at:

http://www.kkmfg.com/adderd/VERGEMARK.zip

And try to run both verge-old.exe and verge.exe

verge-old.exe is the stock verge from version Rev115 compiled with the default release settings

verge.exe is the new exe from my modifications to Revision 115.

My machine is being really stupid and I can't seem to get reliable data out of vergemark so I am hoping others can provide me with the data to determine how well the speedups are working.

Posted on 2006-09-03 17:22:47

Kildorf

Here are my results...

verge_old.exe
low detail map: 167
high detail map: 416
dynamic lighting: 680
pathfinding ai: 334
particles: 500
3d rendering: 1026

total score: 3123

verge.exe
low detail map: 166
high detail map: 413
dynamic lighting: 640
pahtfinding ai: 319
particles: 500
3d rendering: 998

total score: 3036


So yeah, that's just a single run each, but there seems to be a slight increase in your verge.exe. I'll have to run it multiple times at some point when it isn't nearly midnight to get some better numbers.

Posted on 2006-09-03 21:22:45

Code

verge_old.exe
low detail map: 225
high detail map: 857
dynamic lighting: 1750
pathfinding ai: 1368
particles: 700
3d rendering: 2354

total score: 7254

verge.exe
low detail map: 218
high detail map: 857
dynamic lighting: 1580
pahtfinding ai: 1374
particles: 700
3d rendering: 2267

total score: 6996

I'm embarrassed. My computer's getting on in years.

Posted on 2006-09-03 22:18:21

Ness

I rigged up a batch file to run it 5 times. Crappy file hosting service

Posted on 2006-09-03 23:44:52

adderd

Thanks all..

I have since fixed vergemark so that the results are more consistant on all machines and I made the tests longer to better get a score.

Still, the results are basically the same as what you all posted, the new version is very marginally faster.

Currently I am writing a vergec profiler within the interpreter. There will be an interpreter profiler as well. Then we'll see where the bottle necks in both are.

Posted on 2006-09-04 12:32:22

Syn

Thanks for Kildorf for the template I copy pasted. :D

verge_old.exe
low detail map: 251
high detail map: 248
dynamic lighting: 510
pathfinding ai: 616
particles: 400
3d rendering: 820

total score: 2845

verge.exe
low detail map: 251
high detail map: 223
dynamic lighting: 500
pahtfinding ai: 564
particles: 300
3d rendering: 607

total score: 2445

Posted on 2006-09-07 00:14:03

adderd

Still very little improvement.... Well, it helped a bit I suppose.

Someday I'll commit the vergec profiler to SVN. I haven't had time to finish it yet but it does work currently. Then the verge interpreter profiler is next. We'll get this beast purring yet. ;)

Posted on 2006-09-07 22:25:31

basil

Interesting work. V3 used to be a whole lot faster, and at some point one of the handsome new features slowed it right on down. The 2004 exe I put with all the 3d stuff is considerably faster than both the present exec and your revised one. I don't know whether the old source is still around, but if you're looking for speed improvements it might be interesting to see what makes the old exec so much quicker.

Posted on 2006-09-13 23:01:29

adderd

Yes, I've heard reference to that before. I'm not *exactly* sure what was changed but I've heard that older versions were much faster.

It seems that code that old isn't easy to come by anymore so I'm sort of at the mercy of people's memories on this one. I'm pretty sure I do know pretty much what is making it so slow but I'm not currently able to spend any time on it. All of my involvement is once again on hold as I work on business related things instead of games. Once I get some free time I'll try to redo things. I have seen some areas where improvement could be made but I hold off because it's time consuming.

Quote:Originally posted by basil

Interesting work. V3 used to be a whole lot faster, and at some point one of the handsome new features slowed it right on down. The 2004 exe I put with all the 3d stuff is considerably faster than both the present exec and your revised one. I don't know whether the old source is still around, but if you're looking for speed improvements it might be interesting to see what makes the old exec so much quicker.

Posted on 2006-09-14 16:18:08

Kildorf

Might it be a good idea to make a list of places that could use some improvements, speed-wise? Then we have the option of someone else with free time working on it, no? It'd be good to consolidate all such knowledge that anyone may have accumulated.

Posted on 2006-09-14 17:30:08

adderd

Quote:Originally posted by Kildorf

Might it be a good idea to make a list of places that could use some improvements, speed-wise? Then we have the option of someone else with free time working on it, no? It'd be good to consolidate all such knowledge that anyone may have accumulated.


Not a bad idea.

From memory here (culled from profiling runs in the past):

A big area of speed loss is in opcode decoding. There are huge switch statements and recursive Process and ResolveOperand calls. This makes it very slow because there are many, many instructions necessary to even begin running each vergec opcode. Already vergec uses a sort of heap allocation for things which is good. But, to speed things up it would be nice if each opcode output by the vergec compiler was run by looking up a function entry point in a big opcode table and directly jumping there. That makes the main decoding of opcodes a matter of only a few processor instructions (add a number to the function pointer array to get the offset, read the value, jump there). From there each opcode should be able to use inline functions for getting it's parameters and returning values, etc. The use of inline functions serves two purposes 1: It's quick, no function call 2: Using a function allows for a large amount of code reuse and modularity. Currently vergec is very well organized and modular but not quick. The changes I'm suggesting would make the code sort of ugly but it would operate quickly.

Also, once again just off the top of my head, I believe that certain library calls and string manipulation functions get called way too much. Things like strcpy, memset, memcpy, Rawmem:resize, etc. I'm not really sure what exactly can be done to minimize these calls or eliminate them as I haven't spent any time on it yet. It seems like these sort of calls have the potential to be the sort that get called superfluously. Reducing them could have a big impact on performance. I just found one profile from AMD Code Analyst and most of the time was spent in Memcpy and Memset. So something is up with that. I have no idea under what circumstances that profile was run though.

Anyway, I think that decently sums up my thoughts on the matter. I'd appreciate feedback from others who might be the sort to dig into these things (COUGHOVERKILLCOUGH)

Posted on 2006-09-15 19:46:14


Displaying 1-11 of 11 total.
1
 
Newest messages

Ben McGraw's lovingly crafted this website from scratch for years.
It's a lot prettier this go around because of Jon Wofford.
Verge-rpg.com is a member of the lunarnet irc network, and would like to take this opportunity to remind you that regardless how babies taste, it is wrong to eat them.