• Reset your password

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log in
Hjem
LinuxIN.dk

Breadcrumb

  • Hjem
  • forums
  • Chanllege: Lad os se hvis computer kan regne dette hurtigst

Hvad kan du med 100% sikkerhed sige, at du har stemt?

Valgmuligheder
Af Looop | 09.03.2011 17:57

Chanllege: Lad os se hvis computer kan regne dette hurtigst

Humor

Hvis computer kan hurtigst regne summen mellem 0 og ((2^64)/2)-1 ??

Post specs og tid for computeren du køre det på.

Jeg stiller det til rådighed i java kode:



public class CalcFunc{



public CalcFunc(){



}



public void calcFromAtoB(long a, long b){

long sum = 0;

while(a <= b){

System.out.println(Long.toString(a));

sum += a;

a++;

}

}

}







public class app{



public static void main(String[] args){



CalcFunc f1 = new CalcFunc();



long x = (long) (Math.pow(2, 64)/2)-1;

f1.calcFromAtoB(0, x);

}

}



AND NO CHEATS - hvis I kan kode det i sprog som ikke først skal igennem en virtuel maskine eller noget andet gør det, men post koden.



Den computer jeg kører på har følgende specs:

600MHz Intel M centrino

OpenSUSE 11.3 32bit

512MB ram (kan ikke lige husk fart osv)



Den gik i gang 17.48.57

og jeg skal nok posted slut tiden men regner ikke med at det bliver i dag ^_^

Så kom så piger og dreng TIME Challenge


  • Log in to post comments

Kommentarer21

14 år 3 måneder siden

Permalink

Indsendt af stig65 den 9. marts 2011 kl. 18:17

Permalink

Fedest - men hvorfor ikke

Fedest - men hvorfor ikke vælge en test vi ikke kan klare "i hånden"?



S= 1 + 2 + 3+......+N

=> S = (N+1)*N/2



N= 2⁶³-1



=> S= 2⁶³ * (2⁶²-½) = 2¹²⁵-2⁶² = 4,2535296E37


  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af marx den 9. marts 2011 kl. 18:27

Permalink

stig65 vinder prisen som den

stig65 vinder prisen som den hurtigste CPU.



Hvem vil have kage?

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af stig65 den 9. marts 2011 kl. 18:33

Permalink

hmmm, jeg vil hellere have

hmmm, jeg vil hellere have en computer...



Nej, helt alvorligt - var det ikke smartere at sætte folk til at udregne pi med 1000 cifre, beregne de 1000 første primtal eller lignende?

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af Looop den 9. marts 2011 kl. 18:39

Permalink

Stig du har regne forkert du

Stig du har regne forkert du har regnet med 2^63 ikke i 64

De først prim tal skulle ikke være så svært

MEn det kan vi godt sige i stedet for

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af mich den 9. marts 2011 kl. 18:51

Permalink

(2⁶⁴)/2 = 2⁶³

(2⁶⁴)/2 = 2⁶³

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af minimee den 9. marts 2011 kl. 19:14

Permalink

Nu må i lige bestemme jer

Nu må i lige bestemme jer hvad der skal regnes på?? ;)

Hvem skriver først en løsning til brug på Amazon cloud løsning ;)

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af Looop den 9. marts 2011 kl. 19:23

Permalink

vi går efter den med prime

vi går efter den med prime

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af stig65 den 9. marts 2011 kl. 19:26

Permalink

Egentligt tror jeg ikke jeg

Egentligt tror jeg ikke jeg gider - den slags lavede vi lidt for meget under min uddannelse.

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af Looop den 9. marts 2011 kl. 19:31

Permalink

HØHØ
Kan informer om at

HØHØ

Kan informer om at på en

MacBook Pro fall 08

4GB 1067 MHz DDR3 ram

2.8 GHz Intel Core 2 Duo



Kan gøre det på 4sek og svaret er: 501498

Hvis jeg ellers har kodet rigtigt

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af stig65 den 9. marts 2011 kl. 19:33

In reply to HØHØ
Kan informer om at
by Looop

Permalink

Det lyder lidt i

Det lyder lidt i underkanten....

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af mich den 9. marts 2011 kl. 19:35

Permalink

Hvad er det nøjagtigt, du

Hvad er det nøjagtigt, du har regnet ud på 4 sekunder?

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af Looop den 9. marts 2011 kl. 20:11

Permalink

sum af de først 1000 primes

sum af de først 1000 primes

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af floop den 9. marts 2011 kl. 20:16

Permalink

System.out.println <-- er

System.out.println <-- er der ikke ret voldsom overhead ved at skrive til en terminal konstant?

Oggg nu vi er igang, så har implementationen af java en del at sige + at en virtuel maskine er ungefair 10 gange langsommere end compilet kode, hvorfor er det vi ikke laver et c-program? :P

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af Kristho den 9. marts 2011 kl. 20:30

Permalink

Python-kode



#! /usr/bin/env python3



def calcFromAtoB(a, b):

sum = 0

while (a <= b):

print(a)

sum += a

a = a + 1



x = ((2**64) / 2) - 1

calcFromAtoB(0, x)





Mit er skrevet i Python 3 og sat i kog her kl. 20:27.



Debian Testing



Jeg kan Ikke lige huske specs på min pc dog. Men en lille fin 12" packard bell - ca, 1½ år gammel.

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af floop den 9. marts 2011 kl. 20:37

Permalink

Skrevet i c - den burde

Skrevet i c - den burde gøre det du specificere og den burde ikke lave overflow, men giver ingen garantier :P

Skal compiles med gcc eller andet der understøtter long long...



#include

#include

#include



int main(int argc, char *argv[])

{

unsigned long long int a,b,c;

a = 0;

b = (pow(2,64)/2)-1;

c = 0;

while(a <= b){

c += a;

a++;

printf("%lld\n",a);

}

exit(0);

}

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af divineant den 9. marts 2011 kl. 20:49

Permalink

#9 der er da vist noget

#9 der er da vist noget grueligt galt med din macbook, (eller dine kodeevner) hvis det skal tage 4 sekunder



[brian@Lapdog ~]$ time python 1kprimesum.py

3682913



real 0m0.217s

user 0m0.167s

sys 0m0.007s





og kildekoden er her





#!/usr/bin/env python

import math

def is_prime(number):

if number <= 1: return False

if number == 2: return True

if number % 2 == 0: return False

root = math.ceil(math.sqrt(number))+1

for test in range(2,root):

if number % test == 0: return False

return True



primesum = 0

primes = 0

testme = 0

while primes < 1000:

if is_prime(testme):

primesum += testme

primes += 1

if(testme <= 2): testme += 1

else: testme += 2

print(primesum)

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af mich den 10. marts 2011 kl. 02:57

Permalink

#14 Tålmodighed er en dyd

Når den er færdig, skal verdenskortene nok tegnes om. :-)



Jeg kørte dit script (Python 2.6.1, Core 2 Duo, 2.26 GHz) med x=2²⁴/2-1 for at blive færdig i dag.

Uden print statementet tog det 3,52 s, og med tog det 142,9 s.

Skaleret til x=2³²/2-1 er det hhv. 901s og 36575s ~ 10 timer. Som det ses, bruges det meste af tiden til at printe.



For sammenligningens skyld prøvede jeg også med Forth (Gforth 0.6.2), hvilket uden print tog 30s til x=2³²/2-1

( -1 1 rshift giver $7FFFFFFF = 2³²/2-1 )

: Test 0. -1 1 rshift 0 DO I s>d D+ LOOP ;



Test cr D.

2305843005992468481




For at køre til 2⁶⁴/2-1 skal man gange tiden med 2³².

Go figure.

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af Looop den 10. marts 2011 kl. 07:44

Permalink

@16 gik ud fra hvad eclipse

@16 gik ud fra hvad eclipse sagde og har lige kørt det igen:

Start: 7:44:06

Stop: 7:44:10

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af divineant den 10. marts 2011 kl. 09:00

Permalink

#18, det ændrer ikke på at

#18, det ændrer ikke på at det tager 20x længere tid for dit java program på en c2d@2,8GHz, hhv mit python script kørt på en pentium M @1.6 GHz



Retfærdigvis skal det siges at det tager ~1,5 sek hvis jeg rydder cachen inden scriptet eksekveres, men det viser bare at jeg har en ufattelig langsom harddisk.



EDIT:

Men nu viser #17 jo også hvor meget et print statement koster, så hvis din ikke offentliggjorte prime kode spytter 1000 prints ud, så kan det være at pengene passer.

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af julemand101 den 10. marts 2011 kl. 09:23

Permalink

Nå så er det min tur til

Nå så er det min tur til at komme med tallene. Jeg valgte dog fra start af at bruge en noget anderledes algortime for at vise at den her test bare er idiotisk eftersom vi ikke alle sammen bruger samme program med samme algoritme i samme programmeringssprog. Men fair nok.



Test foretaget på en 700 Mhz Pentium III med 256 MB ram:

[julemand101@DOLPH ~]$ time java PrimeMain

3682913



real 0m0.344s

user 0m0.263s

sys 0m0.077s




Test foretaget på en Intel Core i5 med 2.80 GHZ med 16 GB ram:

julemand@servi:~$ time java PrimeMain

3682913



real 0m0.064s

user 0m0.040s

sys 0m0.020s




Programmet er skrevet i Java og kører helt sikkert meget hurtigere hvis det blev skrevet i C men nu havde jeg lige koden liggende efter en Euler Opgave. Koden kan ses her:



public class PrimeMain {



public static void main(String[] args) {

int limit = 8000;

int sievebound = (limit - 1) / 2;



boolean[] sieve = new boolean[sievebound];



int crosslimit = ((int)Math.floor(Math.sqrt(limit)) - 1) / 2;



for (int i = 1; i <= crosslimit; i++) {

if (!sieve[i]) {

for (int j = 2*i*(i+1); j < sievebound; j += 2*i+1) {

sieve[j] = true;

}

}

}

int count = 1;

int sum = 2;

for (int i = 1; count < 1000; i++) {

if (!sieve[i]) {

sum += 2*i+1;

count++;

}

}



System.out.println(sum);

}

}


Det eneste besværlige er lige at finde frem til limit variablen. Algoritmen bygger på sieve algoritmen og er derfor således lavet til at finde alle primtal mellem 2 og n. Eftersom opgaven går ud på at finde summen på de første 1000 primtal skal der lige findes frem til en passende limit hvilket kan gøres ved at lave den meget stor og så se hvor stor i er når den har fundet de første 1000 primtal.

  • Log in to post comments

14 år 3 måneder siden

Permalink

Indsendt af Looop den 10. marts 2011 kl. 17:26

Permalink

Okay så den computer som

Okay så den computer som jeg havde til at regne summe af tal i 63 bit er gået ned på grund af det - eller retter andtager det er pga. det ^_^

  • Log in to post comments

Svar søges

Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0
Linux fra begynder til professionel af O'Reilly 0
Benchmarking dit Linux System 0

Seneste aktivitet

Linuxin er nu migreret til Drupal 11 10
Læsning af databasefil i Firefox 1
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 1
Ny Linuxin på vej :) 43
5G 9
Edit 12
Københavns og Aarhus Kommune dropper MS 4
PCLinuxOS 23
Fairphone? 9
"Intet realistisk alternativ" - mig i r*ven 9
2 stk Jolla C2 sælges 2
En farverig APT 3.0 udgivelse imponerer med sine nye funktioner 5
Vanilla OS 12
Dirk Schrödter kom forbi... 1
Hjælp til remote terminal vindue? 3
Kan ikke boote på installation 24
80-20 reglen 1
Skærmlys fader ud på min bærbare 8
32 bit distro på max 700mb der stadig understøttes 26
Har vi nogen Linux konsulenter i Slagelse området? 3

Copyright © 2025 Company Name - All rights reserved

Developed & Designed by Alaa Haddad