[Moscow.pm] Сравнение языков

Andrey Kovbovich akovbovich на gmail.com
Вт Фев 10 04:33:33 PST 2015


Потестил на более менее современной тачке... вариант Монса у меня
сегфолтится почему-то, прогнал слегка модифицированный из пред комментов

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <stdint.h>
#include <inttypes.h>

int main()
{
        uint32_t *arr;
        arr  = (uint32_t *) malloc(10000000 * sizeof(uint32_t));

        int i,z;
        for( i=0; i<10000000; i++) {
                arr[i] = i;
        }

        clock_t start = clock();
        uint64_t sum;

        for(z = 0; z < 100; z++ ){
            sum = 0;
            for( i=0; i<10000000; i++) {
                            sum+=arr[i];
            }
        }

        clock_t end = clock();
        printf("Time:(%0.8f)ms . Sum: %" PRIu64,
((double)end-start)*1000/CLOCKS_PER_SEC/z, sum);

        return 0;
}

$ cat /proc/cpuinfo
model name : Intel(R) Core(TM) i7 CPU       X 980  @ 3.33GHz

$ gcc --std=c99 -O3 -march=native 3.c -o 3.native
$ ./3.native
Time:(5.20000000)ms . Sum: 49999995000000$


еще раз на скриптовом J

$ ./jconsole.sh
   x =: i.10000000
   6!:2 's =: +/x'
0.009537
   s
49999995000000

9+ ms

10 февраля 2015 г., 14:48 пользователь Анатолий Гришаев <0body0 на rambler.ru>
написал:

> 10.02.2015 14:36, Михаил Монашёв пишет:
>
>> Здравствуйте, Анатолий.
>>
>>  Кстати  лучше  считать  с  нуля  тогда  процесор  может использовать
>>> prefetch
>>>
>> Ещё  в  С  можно  как-то задать выравнивание массива. Не знаю, правда,
>> поможет ли это, но мне кажется, что всё упирается в скорость чтения из
>> памяти. Ещё возможно попытаться задать выравнивание для тела цикла.
>>
>>  В POSIX написано, что результат вызова malloc всегда выровнен, а всякие
> массивы объявленные статично компилятор выравнивает.
> Можно поэтому не волноваться :)
> Конечно, если ты сам адрес массива не посчитаешь/укажешь типа 0x...7f.
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20150210/44c00266/attachment.html>


Подробная информация о списке рассылки Moscow-pm