<html>
<head>
<meta content="text/html; charset=koi8-r" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Коллеги , а что вы не юзаете тот же интеловский компилятор, он то
именно на такой синтетики должен давать максимальные результаты.<br>
<br>
<div class="moz-cite-prefix">On 02/10/2015 04:33 PM, Andrey
Kovbovich wrote:<br>
</div>
<blockquote
cite="mid:CAPTWO-aHEGN3BMryCQT8ppdyD+dNXC-LE1RhA7_Q2Oe8hwjD7g@mail.gmail.com"
type="cite">
<div dir="ltr">
<div><br>
</div>
Потестил на более менее современной тачке... вариант Монса у
меня сегфолтится почему-то, прогнал слегка модифицированный из
пред комментов<br>
<br>
<div>#include <stdio.h></div>
<div>#include <time.h></div>
<div>#include <stdlib.h></div>
<div>#include <stdint.h></div>
<div>#include <inttypes.h></div>
<div><br>
</div>
<div>int main()</div>
<div>{</div>
<div> uint32_t *arr;</div>
<div> arr = (uint32_t *) malloc(10000000 *
sizeof(uint32_t));</div>
<div><br>
</div>
<div> int i,z;</div>
<div> for( i=0; i<10000000; i++) {</div>
<div> arr[i] = i;</div>
<div> }</div>
<div><br>
</div>
<div> clock_t start = clock();</div>
<div> uint64_t sum;</div>
<div><br>
</div>
<div> for(z = 0; z < 100; z++ ){</div>
<div> sum = 0;</div>
<div> for( i=0; i<10000000; i++) {</div>
<div> sum+=arr[i];</div>
<div> }</div>
<div> }</div>
<div><br>
</div>
<div> clock_t end = clock();</div>
<div> printf("Time:(%0.8f)ms . Sum: %" PRIu64,
((double)end-start)*1000/CLOCKS_PER_SEC/z, sum);</div>
<div><br>
</div>
<div> return 0;</div>
<div>}</div>
<div><br>
</div>
<div>$ cat /proc/cpuinfo<br>
</div>
<div>model name<span style="white-space:pre-wrap"> </span>:
Intel(R) Core(TM) i7 CPU X 980 @ 3.33GHz<br>
</div>
<div><br>
</div>
<div>$ gcc --std=c99 -O3 -march=native 3.c -o 3.native<br>
</div>
<div>$ ./3.native<br>
</div>
<div>Time:(5.20000000)ms . Sum: 49999995000000$<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>еще раз на скриптовом J</div>
<div><br>
</div>
<div>
<div>$ ./jconsole.sh</div>
<div> x =: i.10000000</div>
<div> 6!:2 's =: +/x'</div>
<div>0.009537</div>
<div> s</div>
<div>49999995000000</div>
</div>
<div><br>
</div>
<div class="gmail_extra">9+ ms</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">10 февраля 2015 г., 14:48
пользователь Анатолий Гришаев <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:0body0@rambler.ru"
target="_blank">0body0@rambler.ru</a>></span>
написал:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">10.02.2015
14:36, Михаил Монашёв пишет:<span><br>
<blockquote class="gmail_quote" style="margin:0px 0px
0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Здравствуйте,
Анатолий.<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px
0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Кстати
лучше считать с нуля тогда процесор может
использовать<br>
prefetch<br>
</blockquote>
Ещё в С можно как-то задать выравнивание массива.
Не знаю, правда,<br>
поможет ли это, но мне кажется, что всё упирается в
скорость чтения из<br>
памяти. Ещё возможно попытаться задать выравнивание
для тела цикла.<br>
<br>
</blockquote>
</span>
В POSIX написано, что результат вызова malloc всегда
выровнен, а всякие массивы объявленные статично компилятор
выравнивает.<br>
Можно поэтому не волноваться :)<br>
Конечно, если ты сам адрес массива не посчитаешь/укажешь
типа 0x...7f.
<div>
<div><br>
<br>
-- <br>
Moscow.pm mailing list<br>
<a moz-do-not-send="true"
href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>
| <a moz-do-not-send="true"
href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
</pre>
</body>
</html>