Hirdetés

2024. június 30., vasárnap

Gyorskeresés

Hozzászólások

(#1) Fecogame


Fecogame
veterán

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

(#2) Jester01


Jester01
veterán

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

(#3) dabadab válasza Fecogame (#1) üzenetére


dabadab
titán

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 :D

[ Szerkesztve ]

DRM is theft

(#4) dabadab válasza Jester01 (#2) üzenetére


dabadab
titán

"A python érzékeny a whitespace-re, értelmes ember ezért nem is használja."

fixed that for you :DDD

DRM is theft

(#5) Jester01 válasza dabadab (#4) üzenetére


Jester01
veterán

Ugye láttad, hogy a cikkben is elromlott az indentáció QED.
Majd biztos én fogom mindig kézzel javítgatni ha valahol elveszik... :U

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


Feruendios
aktív tag

Ne szorakozz Py-vel meg Bash-el rakj fel egy Node-ot.

Sajnos mar nincs magyar billentyuzetem :(

(#7) vargalex


vargalex
félisten

Shell script megoldás:

#!/bin/sh
echo {1..90000} | tr ' ' '\n'

Alex

(#8) sztanozs


sztanozs
veterán

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...

(#9) buherton


buherton
őstag

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... !!!

(#10) RazorSh4rk


RazorSh4rk
kezdő

Ezzel az a baj, hogy a futás nagy része az std művelet.

e

(#11) sztanozs válasza sztanozs (#8) üzenetére


sztanozs
veterán

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...

(#12) KaiotEch


KaiotEch
nagyúr

Ha egyszer érteném a programozást.... :D

(#13) RazorSh4rk


RazorSh4rk
kezdő

Nem túl reprezentatív, mert nem pi-n fut, de ha valaki még egyszer azt mondja, hogy a java lassú..

e

(#14) sztanozs válasza RazorSh4rk (#13) üzenetére


sztanozs
veterán

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...

(#15) dabadab válasza sztanozs (#14) üzenetére


dabadab
titán

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 :D

DRM is theft

(#16) sztanozs válasza dabadab (#15) üzenetére


sztanozs
veterán

:DDD

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...

Copyright © 2000-2024 PROHARDVER Informatikai Kft.