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