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

Михаил Монашёв postmaster на softsearch.ru
Пн Фев 9 22:28:47 PST 2015


Здравствуйте, 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
> <mons на cpan.org>





> On 9 февр. 2015 г., at 16:11, Михаил Монашёв
> <postmaster на softsearch.ru> 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:postmaster на softsearch.ru




-- 
С уважением,
 Михаил                          mailto:postmaster на softsearch.ru



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