[ Thread Index |
Date Index
| More lists.liballeg.org/allegro-developers Archives
]
> Recompiling only that file with gcc the issue and produces the correct
> output. I'll recompile with full optimizations and build the font.c file
> with gcc (and the same optimization switches as for icc) and post some
> timing tests (there's no automatic benchmark testing, is there?) in a
> moment.
And here they are.
Notice that putpixel is significantly faster for the intel compiler, but
some ofthe other primitives are not for SOLID drawing. ICC is consistently
faster for all other drawing modes.
ICC is consistently slower for blitting but roughly on par or slightly
faster for sprite drawing. The compiled sprite functionality is a freak
due to the fact that the ICC version is compiled without compiled sprite
support because it compiled without inline asm support.
Of course, this is only one benchmark and I wouldn't suggest that this is
solid enough to base any real conclusions on. ICC may also have some
specialized optimization options worth investigating I have not looked at
here.
Evert
Comparing speed of GCC 3.3.1 (with inline asm and -march=-i686) and ICC 8.0
Allegro version 4.1.12 WIP
---------------------------------------------------------------------------
Misc. stuff:
gcc icc
clear_bitmap(320x200): 4260 2547
fixmul(): 9590244 9291351
fixdiv(): 8354831 4398782
fixsqrt(): 11242678 5869424
fixasin(): 13763287 12783877
fixacos(): 13784172 13602487
fixatan(): 3835357 6234118
fixatan2(): 2848445 2879236
Memory profile:
Memory bitmap size: 640x480
Color depth: 16 bpp
DRAW_MODE_SOLID results:
gcc icc
putpixel() - 1275635 1400304
hline() - 772163 669995
vline() - 470129 548294
line() - 119833 139547
rectfill() - 76402 55816
circle() - 67251 88575
circlefill() - 65305 51536
ellipse() - 45408 53250
ellipsefill() - 46612 40032
arc() - 79035 84761
triangle() - 55042 47732
DRAW_MODE_XOR results:
gcc icc
putpixel() - 1226056 1356849
hline() - 507707 661205
vline() - 152715 245381
line() - 91777 122519
rectfill() - 22961 41359
circle() - 48701 71620
circlefill() - 24203 40727
ellipse() - 38331 47723
ellipsefill() - 22127 35047
arc() - 67171 76127
triangle() - 26362 39205
DRAW_MODE_COPY_PATTERN results:
gcc icc
putpixel() - 863018 909672
hline() - 416731 511177
vline() - 145837 236463
line() - 96580 118461
rectfill() - 20995 33973
circle() - 57650 73616
circlefill() - 21687 33175
ellipse() - 39577 48260
ellipsefill() - 20339 28610
arc() - 68464 76647
triangle() - 24691 32975
DRAW_MODE_SOLID_PATTERN results:
gcc icc
putpixel() - 844910 922197
hline() - 331278 437814
vline() - 141127 227640
line() - 91182 113371
rectfill() - 13981 23643
circle() - 53246 71475
circlefill() - 14293 23505
ellipse() - 37307 45833
ellipsefill() - 14131 21903
arc() - 66052 73267
triangle() - 16563 25626
DRAW_MODE_MASKED_PATTERN results:
gcc icc
putpixel() - 856385 911577
hline() - 378246 441796
vline() - 153963 230971
line() - 104669 113006
rectfill() - 17611 25457
circle() - 61232 69668
circlefill() - 18348 24485
ellipse() - 41515 45572
ellipsefill() - 17566 23030
arc() - 68702 70655
triangle() - 20770 25641
DRAW_MODE_TRANS results:
gcc icc
putpixel() - 791808 835854
hline() - 135307 223159
vline() - 103297 175381
line() - 55200 86086
rectfill() - 4316 7298
circle() - 27842 51076
circlefill() - 4149 7834
ellipse() - 24664 37120
ellipsefill() - 4358 8299
arc() - 46291 61599
triangle() - 5903 9630
Other functions:
gcc icc
textout() - 60401 65910
vram->vram blit() - N/A N/A
aligned vram->vram blit() - N/A N/A
blit() from memory - 182710 134807
aligned blit() from memory - 224039 131702
vram->vram masked_blit() - N/A N/A
masked_blit() from memory - 54433 46505
draw_sprite() - 100869 103286
draw_rle_sprite() - 161240 164027
draw_compiled_sprite() - 509685 168038
draw_trans_sprite() - 29396 48191
draw_trans_rle_sprite() - 34756 57158
draw_lit_sprite() - 29028 50437
draw_lit_rle_sprite() - 46521 59630