int main (int argc,char **argv) {
long int S = atoi(argv[1]);
long int i,z;
clock_t start = clock();
long int 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