Portál AbcLinuxu, 30. dubna 2025 20:10
Rad bych porovnal vykon prilozeneho programu v Pythonu na procesoru Amd Phenom 9500 a na Intel Core 2 Quad Q6600.
Jde o to, ze primarne pocitac s jednim z techto procesoru chci vyuzivat a zadna z publikovanych recenzi mi nedala jasnou odpoved, ktery je pro me ucely lepsi.
Mohl by jste nekdo, kdo jste vlastnikem jednoho z vyse uvedenych procesoru test spustit a publikovat dosazene cislo? Na Pentiu 3Ghz to trva 25 sekund a vysledek je 1.13785748392.
Spousti se takto: $ python t.py
import time import random random.seed(0) li1 = [] timeLast = 1206451001.0 numLast = 150000 for i in xrange(1400000): li1.append( ( timeLast, random.randint(0,1), numLast ) ) timeLast += random.uniform(0.0, 3.0) numLast += random.randint(-20,20) t2 = time.time() last0 = 0 last1 = 0 for i in li1: if i[1] == 1: dummy = i[2] - last1 if i[1] == 0: last0 = i[2] else: last1 = i[2] t3 = time.time() print t3-t2A vysledky - uprime receno jsem necekal, ze se cela vec zvrhne v hromadne spusteni danneho scriptu na vsech moznych i nemoznych konfiguracich. Nicmene nicemu to nevadi
Update 28.3. 11:17: Processor Clock Result Cores Rperf Price PriPerf Perf% Price% Delta Comments Intel C2Q Q6600 2.40 0.75 4 0.19 5354 0.00099 100.00% 100.00% 0.00% Python -O3 Intel C2Q Q6600 2.40 0.76 4 0.19 5354 0.00098 99.34% 100.00% 0.66% Xeon E5335 2.00 0.76 4 0.19 7722 0.00068 98.69% 144.23% 45.54% Phenom 9500 2.20 0.98 4 0.24 4128 0.00099 77.02% 77.10% 0.08% Linux (Windows Vista in Virtualbox) Intel C2D 6750 2.66 0.62 2 0.31 4081 0.00079 60.71% 76.22% 15.51% gentoo 64bit -O2, Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz Amd X2 6400+ 3.20 0.78 2 0.39 3688 0.00069 48.27% 68.88% 20.61% Gentoo Intel C2D T7300 2.00 0.79 2 0.40 2000 0.00126 47.48% 37.36% -10.13% Suse 10.3 64bit, Price guessed Intel C2D T7300 2.00 0.8 2 0.40 2000 0.00125 47.24% 37.36% -9.89% Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz (mobilni) Mandriva 2008 64bit Python 2.5.1 Xeon 3050 2.13 0.81 2 0.41 4000 0.00062 46.49% 74.71% 28.22% Cena podle eshopu Amd X2 5500+ 2.9? 0.83 2 0.42 2700 0.00089 45.31% 50.43% 5.12% Price guessed Amd X2 5000+ 2.60 0.88 2 0.44 2165 0.00106 43.09% 40.44% -2.65% Intel C2D T7200 2.00 0.89 2 0.44 1900 0.00118 42.41% 35.49% -6.92% Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz Price guessed Intel C2D 5470 1.60 0.91 2 0.46 1189 0.00185 41.38% 22.21% -19.18% Gentoo Amd X2 4000+ 2.40 0.95 2 0.48 1260 0.00167 39.64% 23.53% -16.11% AMD Athlon64 4000+, 1MB cache, 2.4GHz, Debian Etch 64bit Amd X2 4200+ 2.20 1.12 2 0.56 1308 0.00137 33.81% 24.43% -9.38% Amd Opteron 2.00 1.12 2 0.56 4211 0.00042 33.66% 78.65% 44.99% Dual-Core AMD Opteron(tm) Processor 2212 Intel C2D T5500 1.66 1.31 2 0.66 1189 0.00128 28.78% 22.21% -6.57% Ubuntu 7.10, 32bit version, Python 2.5 standard Amd X2 4000+ 2.10 1.86 2 0.93 1260 0.00085 20.24% 23.53% 3.30% Aneb, kde je chyba? AMD Athlon 64 X2 4000+ (2,1 GHz, 2x512 KB L2) pod Fedorou 8 (jádro 2.6.24-3), 32-bit Intel Xeon 5110 1.60 0.99 1 0.99 3000 0.00034 19.10% 56.03% 36.93% Intel(R) Xeon(R) CPU 5110 @ 1.60GHz, Price guess Intel Xeon XXXX 3.00 1.12 1 1.12 4000 0.00022 16.85% 74.71% 57.87% Intel(R) Xeon(TM) CPU 3.00GHz, Price guess Intel Pentium 4 3.00 1.14 1 1.14 808 0.00109 16.56% 15.09% -1.47% Windows XP, Python 2.5.1 Intel Pentium M 1.60 1.39 1 1.39 772 0.00093 13.52% 14.42% 0.90% Gentoo -O2, Python 2.4.4 Celeron 220 1.20 1.42 1 1.42 1000 0.00070 13.26% 18.68% 5.42% Suse 10.3 64bit, Price guessed Intel Pentium M 1.40 1.46 1 1.46 700 0.00098 12.96% 13.07% 0.12% Intel(R) Pentium(R) M processor 1400MHz, Price guessed Intel Pentium 4 2.40 1.6 1 1.60 500 0.00125 11.75% 9.34% -2.41% Price guessed Intel Pentium 4 2.80 1.72 1 1.72 500 0.00116 10.94% 9.34% -1.60% Pentium 4 2.8 HT, 512 KiB cache, Fedora 7 32 bit, Python 2.5 Intel P3 850Mhz 0.85 4.75 1 4.75 500 0.00042 3.97% 9.34% 5.37% Price guessed Intel Pentium 3 0.90 15.58 1 15.58 500 0.00013 1.21% 9.34% 8.13% ubuntu 7.04 with KDE on Pentium III mobile 900Mhz,256MB RAM [ IBM TP T22 ]Zajimave je, ze Phenom je v Perf% i v Price% souhlasne 77% pod Intel Q6600. Jedine co mne v te souvisloti napada, ze Amd ci Intel velmi peclive otestoval oba procesory a stanovil pak cenu.
Jeste me napadlo, ze by bylo vhodne vysvetlit, co danny script v Pythonu dela, aby bylo zrejme, co se vlastne meri:
Prochazi se velike pole 1.4M s tuple prvky nad kterymi jsou provadene operace odecitani a testovani hodnoty. Meri se cas, za jak dlouho se danne pole projde cele.
V praxi se domnivam, ze dane velke pole se nevejde do zadne z cache na procesoru a proto se hlavne bude merit efektivita procesoru v komunikaci s pameti a integer vypocty. Cela vec bezi pouze na jednom core, ve vysledcich je k tomuto faktu prihlednuto.
Moje vysledna aplikace je jednoduse skalovatelna / rozdelitelna, takze v realnem prostredi bude bezet 4+1 nebo tak nejak podobne.
Tiskni
Sdílej:
Prochazi se velike pole 1.4M s tuple prvky nad kterymi jsou provadene operace odecitani a testovani hodnoty. Meri se cas, za jak dlouho se danne pole projde cele.No, pole, ikdyby ten seznam nakonec byl pole, tak v něm budou stejně jen odkazy na nějaké ty tuple a ty už móžó bét rozházené po paměti divně, no ni? Zdá se mi, že totok závisí dosti na implementaci pythóna, tož těžko věřit, že to něco měřit. Ale musím dodat, že pythonu vůbec nerozumím. A docela by mě zajímalo třeba, jestli interpret vůbec někdy třeba počítá dummy (což vypadá jako lokální proměnná ne, která se nikde nepoužívá) nebo místo toho udělá jen "continue" (jako né že by to mělo vliv na výslednej ča, kvůli tomu sa neptám).
0.764378070831 real 0m15.569s user 0m15.365s sys 0m0.196s model name : Intel(R) Xeon(R) CPU E5335 @ 2.00GHz
1.11453294754 real 0m20.534s user 0m20.241s sys 0m0.256sIntel Xeon 3050 (2.13 GHz, 2x 1 MB cache)
0.810898065567 real 0m14.930s user 0m14.753s sys 0m0.168sIntel Pentium 4 HT (2.4 GHz, 512 kB cache)
1.60360789299 real 0m30.278s user 0m29.958s sys 0m0.188s... vsechno na Gentoo
Core 2 Duo T7300 2.0 GHz
0.79435300827 real 0m14.214s user 0m13.957s sys 0m0.144s
Celeron 220 1.2 GHz
1.42196798325 real 0m26.569s user 0m26.226s sys 0m0.296s
Oboje OpenSUSE 10.3 64-bit. Ten Celer příjemně překvapil.
Ještě doplním PC ve škole:
Pentium 4 2.8 HT, 512 KiB cache, Fedora 7 32 bit, Python 2.5
1.72318410873 real 0m30.870s user 0m30.446s sys 0m0.420s
$ time python a.py 0.832358837128 real 0m13.999s user 0m13.837s sys 0m0.164s
1.86271500587 real 0m24.353s user 0m24.131s sys 0m0.173sAneb, kde je chyba?
0.950555086136 real 0m15.760s user 0m15.554s sys 0m0.127sAMD Athlon64 4000+, 1MB cache, 2.4GHz, Debian Etch 64bit.
1.45540785789 real 0m26.071s user 0m25.718s sys 0m0.208s model name : Intel(R) Pentium(R) M processor 1400MHz
0.889379024506 real 0m15.625s user 0m15.377s sys 0m0.132s 0.918316841125 real 0m16.262s user 0m15.889s sys 0m0.216s 0.884744167328 real 0m15.549s user 0m15.257s sys 0m0.208s
model name : Dual-Core AMD Opteron(tm) Processor 2212 cpu MHz : 1995.064 cache size : 1024 KB 1.11980485916 real 0m18.377s user 0m18.089s sys 0m0.276s---------------------------------------------------
model name : Intel(R) Xeon(R) CPU 5110 @ 1.60GHz cpu MHz : 1600.098 cache size : 4096 KB 0.987221956253 real 0m17.045s user 0m16.705s sys 0m0.324s---------------------------------------------------
model name : Intel(R) Xeon(TM) CPU 3.00GHz cpu MHz : 3000.168 cache size : 2048 KB 1.11849689484 real 0m20.763s user 0m20.521s sys 0m0.232s
171.617203951 real 47m17.250s user 12m24.040s sys 2m5.370s(TurboSPARC 170MHz, Solaris 2.6, python 2.5.1)
0.908358097076 real 0m15.905s user 0m15.800s sys 0m0.070s
model name : Intel(R) Pentium(R) Dual CPU E2140 @ 1.60GHz stepping : 13 cpu MHz : 1999.908 cache size : 1024 KB
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.