Jump to content

C valoda, mazākais kopigais dalāmais


Llama
 Share

Recommended Posts

 

 

Eiklīds gan tev pašvaks. C man uz 6+ gadus vecā laptopa 4'000'000'000 iterācijas sarēķina 4.3 sekundēs
 

 

C ir ātrāks par JVM.


 

 

Uzminiet nu, kāpēc tā

 

Lai a * b nedabon overflow

Link to comment
Share on other sites

 

 

C ir ātrāks par JVM.

Tad jau tava programma pēc definīcijas nevar būt labāka ;)

 

Pitons (kaut kāds 2.7), ap 0.07 msecs. Javu gan nevarēšu paskatīties.

 

from time import clock

def gcd(a, b):
  while a != b:
    tmp = min(a, b)
    a, b = tmp, max(a, b) - tmp
  return a

def lcm(a, b):
  return a / gcd(a, b) * b

iterations = 100000
clock()
for i in xrange(iterations):
    lcm(89248, 91176)
print clock() / iterations * 1000, "msecs"
print lcm(89248, 91176)
Link to comment
Share on other sites

nevertell

Oj oj oj, bet Mairi, vai tad tu neteici, ka Java ir visu valodu valoda un pēdējās relīzēs notiek runtime optimizācijas, kas iterācijas padara vēl ātrākas par kodu, kas kompilēts ar C ?

Link to comment
Share on other sites

Tpfu… Dīvains man tas gcd :D Pitonā laikam šādi būtu pareizāk:

 

def gcd(a, b):
  while b != 0:
    a, b = b, a % b
  return a

Attiecīgi arī ātrums palielinās - 0.003 msec pitonā (iepriekšējo 0.07 msec vietā).

Link to comment
Share on other sites

Java nemaz nav lieliska valoda un par JIT viņi tikai tā saka, ka būs ātrāks par C.  :)

Vai tik Clojures Eiklīds nav ātrāks par pitonu ?

 

sandbox.lcm> (time (doseq [x (range 100000)] (lcm 89248 91176)))
"Elapsed time: 182.274 msecs"
nil
sandbox.lcm>  (/ 182.274 100000)
0.00182274
 
var loop un type hints pamēģināt
 
(defn lcm9 ^Integer [^Integer aa ^Integer bb] 
  (loop [^int a aa ^int b bb]
    (if (zero? b) (* bb (/ aa a)) (recur b (rem a b)))))
sandbox.lcm> (time (doseq [x (range 100000)] (lcm9 89248 91176)))
"Elapsed time: 109.86 msecs"
nil
sandbox.lcm> (/ 109.86 100000)
0.0010986
 
tas viss protams nav nopietni, ja grib ātrumu, tad to bināro algoritmu jāuzkodē iekš c
Labots - MarisO
Link to comment
Share on other sites

 

 

Vai tik Clojures Eiklīds nav ātrāks par pitonu ?

Kas to lai zina. Nav jau zināms, kas tev par dzelzi. Pieļauju, ka dažas reizes jaudīgāks par manējo ;)

Link to comment
Share on other sites

  Model Name: MacBook Pro


  Processor Name: Intel Core 2 Duo


  Processor Speed: 2.53 GHz


  Total Number of Cores: 2


  L2 Cache: 3 MB


  Memory: 8 GB


Link to comment
Share on other sites

CPU - Turion 58TL 1.9GHz

RAM - principā pofig, tam te īsti nav ko ietekmēt. Bet nu 2x DOPE1B163B2 (kopumā 4GB DDR2-667 SDRAM).

Link to comment
Share on other sites

canis_lupus

Man rodas iespaids, ka tēmas autors neiebrauc savos iepostētajos koda fragmentos, pirmajos postos ož pēc kopīpeista, tālāk jau kaut kādi komentāri kodā un finālā autora rakstīti komentāri, kuros ir jūtams, ka cilvēks atpazīst atsevišķas koda funkcionējošās daļas, bet tā īsti neizkož visu programmu kopumā. Vismaz cilvēks tika pie vērtējums ;)

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...