Ξ ~ → /Applications/Julia-0.3.5.app/Contents/Resources/julia/bin/julia -e '@time x=Int32[0:10000000-1];@time s=sum(x);print(s)' elapsed time: 0.088132927 seconds (40157560 bytes allocated, 21.96% gc time) elapsed time: 0.05047629 seconds (910000 bytes allocated) 49999995000000%
Ξ /Applications/j64-701 → ./bin/jconsole 7!:2 'x=:i.10000000' 134219264 6!:2 's=:+/x' 0.016223 s 49999995000000 итого: Julia 50ms/38MB J 16ms/128MB 10 февраля 2015 г., 9:49 пользователь Анатолий Гришаев <[email protected]> написал: > > Linux i386 > > gcc -O3 -march=native 3.c -o 3.out && ./3.out > Time:(0.00000000)ms . Sum: 49999995000000 > > иногда но редко получается > > gcc -O3 -march=native 3.c -o 3.out && ./3.out > Time:(10.00000000)ms . Sum: 49999985000000 > > Кстати лучше считать с нуля тогда процесор может использовать prefetch > > 10.02.2015 9:28, Михаил Монашёв пишет: > >> Здравствуйте, Mons. >> >> >> Вот код, который соответствует исходной задаче. >> >> #include <stdio.h> >> #include <time.h> >> >> int main() >> { >> unsigned __int32 *arr; >> >> arr = (unsigned __int32 *) malloc(10000000 * sizeof(unsigned >> __int32)); >> >> int i; >> for( i=10000000-1; i>=0; i--) { >> arr[i] = i; >> } >> >> clock_t start = clock(); >> >> unsigned __int64 sum; >> sum = 0; >> for( i=10000000-1; i>=0; i--) { >> sum+=arr[i]; >> } >> >> clock_t end = clock(); >> >> printf("Time:(%0.8f)ms . Sum: %llu", >> ((double)end-start)/CLOCKS_PER_SEC*1000, >> sum); >> return 0; >> } >> >> C:\Temp>gcc -O3 -march=native 3.c -o 3.exe >> 3.c: In function 'main': >> 3.c:8:30: warning: incompatible implicit declaration of built-in function >> 'malloc' [enabled by default] >> arr = (unsigned __int32 *) malloc(10000000 * sizeof(unsigned >> __int32)); >> ^ >> >> C:\Temp>3.exe >> Time:(11.00000000)ms . Sum: 49999995000000 >> >> Это время в 32-битной венде. >> >> Как победить этот варнинг при компиляции я не разбирался пока. >> >> >> int main (int argc,char **argv) { >>> ═ ═ ═ ═ longint S = atoi(argv[1]); >>> ═ ═ ═ ═ longint i,z; >>> ═ ═ ═ ═ clock_t start = clock(); >>> ═ ═ ═ ═ longint sum = 0; >>> ═ ═ ═ ═ for(z = 0; z < 1000; z++ ){ >>> ═ ═ ═ ═ ═ ═ ═ ═ sum = 0; >>> ═ ═ ═ ═ ═ ═ ═ ═ for (i=0;i < S - S % 16; i+=16) { >>> ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ sum += i ═ + i+1 + i+2═ + i+3═ + i+4═ + i+5═ + >>> i+6═ + i+7 >>> ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ══+═ i+8 + i+9 + i+10 + i+11 + i+12 + i+13 + >>> i+14 + i+15 >>> ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ; >>> ═ ═ ═ ═ ═ ═ ═ ═ } >>> ═ ═ ═ ═ ═ ═ ═ ═ for (i; i < S; i++ ) { >>> ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ ═ sum += i; >>> ═ ═ ═ ═ ═ ═ ═ ═ } >>> ═ ═ ═ ═ } >>> ═ ═ ═ ═ clock_t end = clock(); >>> ═ ═ ═ ═ printf("%lu (%0.8f)\n",sum,((double)end-start)/1e6/z); >>> } >>> >> >> >> >> >> 1.5 ms >>> >> >> gcc --std=c99 -O3 -march=native >>> >> >> >> >> --═ >>> Mons Anderson >>> <[email protected]> >>> >> >> >> >> >> On 9 февр. 2015 г., at 16:11, Михаил Монашёв >>> <[email protected]> wrote: >>> Здравствуйте, Mons. >>> Народ, я не осилил дочитать это всё до конца. >>> А давайте-ка соберёмся и померяемся. >>> Не в плане теории, а в плане конкретных чисел >>> сравним разные языки, подходы и т.п. >>> >> >> >> А ═собираться ═обязательно? ═Можно ведь и удалённо. Я на Go пишу всего >>> месяц ═и ═мне было бы сложно придти и что-то нормально на нём написать >>> за малое время. Но сравнить языки было бы интересно. >>> Предложу ═простую ═задачку, ═которая ═покажет, ═насколько ═хорошо язык >>> работает ═с ═памятью: ═сложить ═все ═значения ═массива, ═состоящего из >>> 10000000 ═целых чисел. Код там простой: создаём массив, заполняем его, >>> замеряем ═время, ═потом ═в ═цикле ═складываем ═элементы массива, снова >>> замеряем время и выдаём результат. Вот мой вариант на Go: >>> https://play.golang.org/p/iHGG3nV10L >>> Тонкости: ═в песочнице код съедает много процессора и время там всегда >>> одно ═и ═то ═же, поэтому его надо сохранить в файл, например main.go и >>> потом запустить вот так: go run main.go >>> Скомпилировать ═в исполняемый файл можно вот так: go build main.go >>> А вот так выйдет более быстрая версия: go build -gcflags="-B" main.go >>> Скачать Go можно вот тут: http://golang.org/ >>> -- >>> С уважением, >>> Михаил ═════════════════════════mailto:[email protected] >>> >> >> >> >> > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
