Benchmark

Направих една малка сцена, която да служи като benchmark - да си сравняваме производителността на машините и ползите от различните оптимизации на компилатора и/или хардуерни бонуси като Hyper-threading, etc. Ето и инструкции как да си тествате машината:

Сцената е benchmark.fmiray, от последната ревизия (321).
Сменяте в main.cpp да се ренди нея и я пускате (в режим Release, по възможност и с пуснати SSE2 оптимизации).
Ако сте на многоядрена машина, можете да пуснете и един single-threaded рендер за да видите подобрението от паралелизацията (за целта разкоментирайте NUMTHREADS 1 реда в сцената).

След което пишете среда, компилатор, и хардуер и го поствате тука :)

Ето и няколко машини тук:

1. Core i7 920 (2.66GHz), 4 ядра с Hyper-threading (8 нишки)
Linux Fedora 11, gcc 4.4
::Резултати::

g++ -O2 @ 8 нишки: 16.9s.
g++ -O3 -ffast-math -msse -msse2 -mfpmath=sse @ 8 нишки: 13.3s.
g++ -O3 -ffast-math -msse -msse2 -mfpmath=sse @ 1 нишкa: 43.3s.

2. Asus Eee PC (Intel Atom N270 @ 1.6 GHz с Hyper-threading, 2 нишки)
Linux Ubuntu 9.10, gcc 4.4.1
::Резултати::

g++ -O2 @ 2 нишки: 290.2s.
g++ -O3 -ffast-math -msse -msse2 -mfpmath=sse @ 2 нишки: 203s. (30% подобрение)
g++ -O3 -ffast-math -msse -msse2 -mfpmath=sse @ 1 нишкa: 340 s. (Hyper-threading-ът помага с цели 67%)

После ще пусна и още резултати. Който желае - да тества :)

Comments

Benchmark

Интересно дали някой ще бие i7-цата =)

Core 2 Quad Q9505 (3.06GHz), 4 ядра без Hyper-threading
Microsoft Windows XP, Microsoft Visual Studio 2005

  • MSVC /O2 /fp:precise @ 4 threads: 19.090s.
  • MSVC /O2 /arch:SSE2 /fp:fast @ 4 threads: 16.895s.
  • MSVC /O2 /arch:SSE2 /fp:fast @ 1 thread: 64.900s.
  • Without IT I'm just espr.

    Още резултати

    Още резултати:

    1. Opteron 165 (1.8 GHz) двуядрен
    Linux Slackware 12.1, gcc 4.2.3, оптимизации: -O3 -ffast-math -msse -msse2 -mfpmath=sse
    ::Резултати::

    1 нишка: 109.2s
    2 нишки: 56.1s

    2. Core 2 Duo (Penryn, 6MB cache) @ 2.8 GHz двуядрен
    ::Резултати::

    Linux Fedora 11, gcc 4.4 (full optimizations)
    1 нишка: 54.4s
    2 нишки: 27.6s

    Windows XP, Visual C++ 2003 (full optimizations*)
    2 нишки без SSE2: 34.6s
    2 нишки: 28.6s

    Visual C++ 2008 (full optimizations)
    2 нишки без SSE2: 31.8s
    2 нишки: 28.9s

    (* под "full optimizations" се има предвид: "floating point model" на "fast"; "inlining mode" на "any suitable"; "Optimizations" на "Full optimization (/Ox)"; "Whole program optimization" на "Yes/Link time code generation"; "Omit leaf frame pointer" на "Yes")

    3. Duron Applebred @ 2025 MHz
    Win XP SP2, Visual C++ 2003 без SSE (не се поддържат от процесора)
    ::Резултати::

    1 нишка: 146s

    Benchmark

    HP Pavillion d4150.SE (AMD Athlon(tm) 64 Processor 4000+)
    Linux Debian testing, gcc 4.3.4
    ::Резултати::

    g++ -O2: 132 s.
    g++ -O2 -ffast-math -msse -msse2 -mfpmath=sse: 106 s.
    g++ -O3 -ffast-math -msse -msse2 -mfpmath=sse: 97 s.

    Benchmark

    HP Compaq 6820s (Intel(R) Core(TM)2 Duo CPU @ 2.00GHz, 2 нишки)
    Linux Debian testing, gcc 4.3.4
    ::Резултати::

    g++ -O2 @ 2 нишки: 61s.
    g++ -O2 -ffast-math -msse -msse2 -mfpmath=sse @ 2 нишки: 50s.
    g++ -O3 -ffast-math -msse -msse2 -mfpmath=sse @ 2 нишкa: 45s.

    Ето и един пример за ползата

    Ето и един пример за ползата от 64-битовия режим

    Процесор: Intel Atom Z330 (двуядрен с Hyper-threading, 4 нишки) @ 1.6 GHz
    OS: Linux Fedora 11 x86_64
    Компилатор: gcc 4.4

    32 bit настройки: -O3 -msse -msse2 -mfpmath=sse -m32
    Резултат: 81.7s (4 нишки)

    64 bit настройки: -O3 -msse -msse2 -mfpmath=sse
    Резултат: 70.3s

    Полза от 64-битовия режим: 16%

    Phenom X6

    Ето и резултат от една доволно нова и мощна машина - AMD Phenom X6.

    OS: Fedora 13, 64-bit
    Компилатор: g++ 4.4
    Оптимизации: -O3 -ffast-math
    SSE2: включено

    1 нишка: 30.3s
    2 нишки: 14.8s
    3 нишки: 10.7s
    4 нишки: 8.5s
    6 нишки: 7.1s

    А всъщност какво представлява

    А всъщност какво представлява сцената? Колко полигона е, с какви настройки и как изглежда? Преинсталвах компа и в момента нямам даже и компилатор за С++ и не ми се занимава, затова питам :)

    preview

    benchmark preview

    около 17000 триъгълника.