Nekem meglepő volt, hogy bizonyos esetben 240x gyorsabb a Python, mint a shell script.
Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
Nekem meglepő volt, hogy bizonyos esetben 240x gyorsabb a Python, mint a shell script.
Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
A python érzékeny a whitespace-re, értelmes ember ezért nem is használja. Ez csak azért különösen vicces mert a cikkben lévő kód is rossz ilyen szempontból
Mivel az első shell scriptben bash van, ezért a másodikat is át lehet írni bash-ra, hogy ne indítson minden alkalommal külső processzt az expr miatt, imígyen:
#!/bin/bash
a=0
while [ $a -lt 90000 ]
do
echo $a
a=$((a + 1))
done
Ez nálam pontosan olyan gyors mint a python (terminál output limit lehet).
Jester
Persze, mert shellből folyamatosan külső processzeket indítasz el.
Próbáld meg pl a while-t így, nagyjából két nagyságrenddel lesz gyorsabb:
#!/bin/bash
a=0
while [ $a -lt 9000 ] ; do
echo $a
let a++
done
szerk: így jár az, aki hsz írása közben elmegy ebédelni
[ Szerkesztve ]
DRM is theft
"A python érzékeny a whitespace-re, értelmes ember ezért nem is használja."
fixed that for you
DRM is theft
Ugye láttad, hogy a cikkben is elromlott az indentáció QED.
Majd biztos én fogom mindig kézzel javítgatni ha valahol elveszik...
Kompatibilitásról meg hírből sem hallottak a kedves python fejlesztők. Ilyen-olyan scriptek miatt amik csak a saját minor (!) verziójukkal mennek, most is van telepítve 2.4, 2.5, 2.6, 2.7, 3.0, 3.1 és 3.2... köszönöm, de ne szemeteljék már tele a gépemet.
[ Szerkesztve ]
Jester
(#6) Feruendios
Ne szorakozz Py-vel meg Bash-el rakj fel egy Node-ot.
Sajnos mar nincs magyar billentyuzetem :(
Shell script megoldás:
#!/bin/sh
echo {1..90000} | tr ' ' '\n'
Alex
from timeit import default_timer as timer
def testTime(execution):
start = timer()
execution()
end = timer()
return(execution.__name__, end - start)
def while1():
count = 9000
while count:
count = count - 1
print(9000-count)
pass
def while2():
count = 0
while (count < 90000):
count += 1
print(count)
pass
def for1():
for i in range(1,90000):
print(i)
pass
de = {}
a,b = testTime(while1)
de[a] = b
a,b = testTime(while2)
de[a] = b
a,b = testTime(for1)
de[a] = b
print(de)
Eredmény:{
'while1': 0.017804100422010548,
'while2': 0.2117797429410634,
'for1': 0.2141544650973869
}
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Nem tartom szerencsésnek az stdout-ra kiírással járó teszteknek. A programok jó részt úgy sem így működnek.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
Ezzel az a baj, hogy a futás nagy része az std művelet.
e
Persze jól elírtarm - 9.000 a 90.000 helyett az első while-ban.
Helyesen így jön az eredmény:{
'while1': 0.1950779151163773,
'while2': 0.21067238546805514,
'for1': 0.1862087994069625
}
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Ha egyszer érteném a programozást....
Nem túl reprezentatív, mert nem pi-n fut, de ha valaki még egyszer azt mondja, hogy a java lassú..
e
Aha, és ez mi?
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Ha jól látom, akkor itt az látható, hogy valami gyors processzoros gépen a Javanak több, mint fél másodpercébe telik, hogy lefutasson egy gyors programot. El lehet képzelni, hogy milyen teljesítményt produkálna, ha egy lassú programot kellene futtatnia
DRM is theft
bejegyzés Shell script vs. Python - gyorsteszt