Vilket är snabbast av Java och Python? Är skillnaden mätbar i sekunder?
Hur stor är skillnaden i snabbhet mellan Python och C++?
Java och C++?
Har gått och funderat på detta länge nu

Kod: Markera allt
Time spent in user mode (CPU seconds) : 0.120s
Time spent in kernel mode (CPU seconds) : 0.036s
Total time : 0:00.15s
Kod: Markera allt
Time spent in user mode (CPU seconds) : 0.012s
Time spent in kernel mode (CPU seconds) : 0.008s
Total time : 0:00.02s
Kod: Markera allt
Time spent in user mode (CPU seconds) : 0.000s
Time spent in kernel mode (CPU seconds) : 0.000s
Total time : 0:00.00s
Kod: Markera allt
#include <stdio.h>
int main(int argc, char **argv) {
unsigned char a;
for(a = 1; a != 0; a++)
printf("a :%d\n", a);
return 0;
}
Kod: Markera allt
import java.io.*;
public class loop {
static public void main(String[] args) {
byte a;
for(a = 1; a != 0; a++)
System.out.println("a: " + a);
}
}
Kod: Markera allt
#!/usr/bin/python
a = 1
while a <= 255:
print "a:" + `a`
a = a + 1
Kod: Markera allt
#!/usr/bin/env python
for a in xrange(1, 256):
print "a:%d" % (a)
Ah jag är ingen python programmerar och jag påstår mig inte vara en. Men det exempelet tycks bara visa på att python tolken är dålig på att optimera kod.Smygis skrev: Och för att vidare strycka detta så tyckte jag att gasols Pythonprogram såg väldigt ickeoptimerat ut.
är i snitt 30% snabbare för mig.Kod: Markera allt
#!/usr/bin/env python for a in xrange(1, 256): print "a:%d" % (a)
Nejdu, Hur mycket man önskar så kan den nog inte förvandla en vanlig while-loop till en iterering över en generator.gasol skrev:Ah jag är ingen python programmerar och jag påstår mig inte vara en. Men det exempelet tycks bara visa på att python tolken är dålig på att optimera kod.Smygis skrev: Och för att vidare strycka detta så tyckte jag att gasols Pythonprogram såg väldigt ickeoptimerat ut.
är i snitt 30% snabbare för mig.Kod: Markera allt
#!/usr/bin/env python for a in xrange(1, 256): print "a:%d" % (a)
Premature optimizations is the root to all evil.
Det är algoritmerna som ska effektiviseras, hur koden översätts till maskikod / tolkas på ett bra sätt det ska kompilatorn / tolken lista ut åt mig ( -O till gcc ), annars så skulle jag ju lika gärna kunna gå tillbaka och programmera assembly.
Intresant går det på nåt sätt att generera maskinkod från python tolken, som visar på skillnaden?Smygis skrev:Nejdu, Hur mycket man önskar så kan den nog inte förvandla en vanlig while-loop till en iterering över en generator.gasol skrev:Ah jag är ingen python programmerar och jag påstår mig inte vara en. Men det exempelet tycks bara visa på att python tolken är dålig på att optimera kod.Smygis skrev: Och för att vidare strycka detta så tyckte jag att gasols Pythonprogram såg väldigt ickeoptimerat ut.
är i snitt 30% snabbare för mig.Kod: Markera allt
#!/usr/bin/env python for a in xrange(1, 256): print "a:%d" % (a)
Premature optimizations is the root to all evil.
Det är algoritmerna som ska effektiviseras, hur koden översätts till maskikod / tolkas på ett bra sätt det ska kompilatorn / tolken lista ut åt mig ( -O till gcc ), annars så skulle jag ju lika gärna kunna gå tillbaka och programmera assembly.
Och det är lite av en utmaning att bestämma hur man ska göra, I vissa fall så är while-loopen att föredra. Till skillnad från C då for-loopen helt enkelt är en kompaktare while-loop så är while-loopen och for-loopen i Python två helt skilda saker som fungerar på helt olika sätt.
Kod: Markera allt
a = 0;
for(; ++a; )
printf("a :%d\n", a);
Kod: Markera allt
a = 0;
while(++a )
printf("a :%d\n", a);
Kod: Markera allt
>>> for v in ["Hej", 19, 3.14, "Det är mitt i natten"]:
... print "v är: %s" % (v)
...
v är: Hej
v är: 19
v är: 3.14
v är: Det är mitt i natten
Ah den är mycket lik Javas for each loop isf.Smygis skrev: while loopen i python är precis som alla andra while loopar
while (statement is true):
Men for loopen därimot
for variable in sequence:
kan man läsa ut som:
for each element in sequence:
lite visning:Och xrange är ett generator objekt som genererar en talsekvens mellan angivna tal. Till skillnad mot range som returnerar en lista med tal i.Kod: Markera allt
>>> for v in ["Hej", 19, 3.14, "Det är mitt i natten"]: ... print "v är: %s" % (v) ... v är: Hej v är: 19 v är: 3.14 v är: Det är mitt i natten
>>> xrange(10)
xrange(10)
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
I en for loop gör dem samma sak men xrange är snabbare/mer snäll mot minnet.