>> Начал недавно проект по разработке SIMD бибилиотек для С++ на Fasm под
>> 64-bit Linux.
>> Интересно услышать мнение матерых программеров как о самом проекте, так и качестве
>> кода.
>> Вот вебсайт, где можно качнуть исходники и посмотреть документацию, которая уже есть.
>> http://linasm.sourceforge.net/docs/index.php
> Нет бенчмарков, что настораживает. Или есть?Есть. Их код вот тут: http://sourceforge.net/projects/linasm/files/SpeedTests.tar....
А результаты тестов вот они.
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
stepping : 7
cpu MHz : 3160.503
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc rep_good pni ssse3 lahf_lm
bogomips : 6321.00
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
################################################################################
# Numbers conversion library speed test #
################################################################################
This test converts 1000000 numbers in 100 rounds.
Integer numbers conversion:
===========================
Octal numbers conversion:
'sscanf' time: 19.755847 sec
'strtoul' time: 5.476777 sec
'LinAsm' time: 2.952698 sec
Hexadecimal numbers conversion:
'sscanf' time: 19.364499 sec
'strtoul' time: 6.264688 sec
'LinAsm' time: 4.190943 sec
Decimal numbers conversion:
'sscanf' time: 18.347976 sec
'strtoul' time: 5.220468 sec
'LinAsm' time: 2.785372 sec
Floating-point numbers conversion:
==================================
Hexadecimal numbers conversion:
'sscanf' time: 26.137860 sec
'strtod' time: 10.961610 sec
'LinAsm' time: 5.795652 sec
Decimal numbers conversion:
'sscanf' time: 27.214856 sec
'strtod' time: 15.222347 sec
'LinAsm' time: 2.954274 sec
################################################################################
# Time conversion library speed test #
################################################################################
This test converts 1000000 time stamps in 100 rounds.
Unix time to Gregorian date conversion:
'gmtime' time: 4.228890 sec
'LinAsm' time: 2.284649 sec
Gregorian date to unix time conversion:
'mktime' time: 122.046674 sec # Это не шибка. Такой вот код в libc
'LinAsm' time: 1.005384 sec
################################################################################
# Array library speed test #
################################################################################
This test operates on 10000000 elements wide flt64_t arrays in 100 rounds.
Addition:
Classic scalar code time: 1.407980 sec
LinAsm vector code time: 1.379985 sec
Subtraction:
Classic scalar code time: 1.426498 sec
LinAsm vector code time: 1.379655 sec
Multiplication:
Classic scalar code time: 1.397805 sec
LinAsm vector code time: 1.386163 sec
Division:
Classic scalar code time: 6.425936 sec
LinAsm vector code time: 3.445004 sec
Absolute value:
Classic scalar code time: 1.008767 sec
LinAsm vector code time: 0.921362 sec
Square root value:
Classic scalar code time: 11.988184 sec
LinAsm vector code time: 2.745969 sec
Min value:
Classic scalar code time: 1.329877 sec
LinAsm vector code time: 0.665184 sec
Max value:
Classic scalar code time: 1.320772 sec
LinAsm vector code time: 0.665314 sec
Convolution value:
Classic scalar code time: 1.269394 sec
LinAsm vector code time: 1.083574 sec
Sorting:
Classic Quick Sort code time: 1.848767 sec
LinAsm Quick Sort code time: 0.770507 sec
LinAsm Radix Sort code time: 0.332851 sec