LINUX.ORG.RU

История изменений

Исправление x4DA, (текущая версия) :

Ты меряешь умножение целых, а не даблов.

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

double array[3000000];

int main(void)
{
	double result=0;

	srand(time(NULL));
	
	for(long int j=0; j!=3000000 ;j++)
	{  
		array[j] = (rand() % 1000000) / 1000000.0;
	};

	timespec time1, time2;
    	const int TRIES = 1000;

	clock_t start = clock();
	
	for (long int ntr; ntr < TRIES; ntr++) {
		for(long int j = 0; j < 3000000; j++) {  
			result += ( array[j] * array[j] ); 
		};
	}

	clock_t end = clock();
	double secs = (double) (end - start) / CLOCKS_PER_SEC;

	printf("result = %.2lf\navg time = %lf ms cpu time\n", result, secs / 1000 / TRIES);
	return 0;
}

у меня (core2 duo) показывает что-то вроде 0.000007 ms cpu time

Кстати, если собрать без -O2 то ваще в нули выходит.

Исправление x4DA, :

Ты меряешь умножение целых, а не даблов.

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

double array[3000000];


int main(void)
{
	double result=0;

	srand(time(NULL));
	
	for(long int j=0; j!=3000000 ;j++)
	{  
		array[j] = (rand() % 1000000) / 1000000.0;//Ограничил двузначными
	};

	timespec time1, time2;
    
	const int TRIES = 1000;

	clock_t start = clock();
	
	for (long int ntr; ntr < TRIES; ntr++) {
		for(long int j = 0; j < 3000000; j++) {  
			result += ( array[j] * array[j] ); 
		};
	}

	clock_t end = clock();

	double secs = (double) (end - start) / CLOCKS_PER_SEC;

	printf("result = %.2lf\navg time = %lf ms cpu time\n", result, secs / 1000 / TRIES);
	return 0;
}

у меня (core2 duo) показывает что-то вроде 0.000007 ms cpu time

Кстати, если собрать без -O2 то ваще в нули выходит.

Исходная версия x4DA, :

Ты меряешь умножение целых, а не даблов.

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

double array[3000000];


int main(void)
{
	double result=0;

	srand(time(NULL));
	
	for(long int j=0; j!=3000000 ;j++)
	{  
		array[j] = (rand() % 1000000) / 1000000.0;//Ограничил двузначными
	};

	timespec time1, time2;
    
	const int TRIES = 1000;

	clock_t start = clock();
	
	for (long int ntr; ntr < TRIES; ntr++) {
		for(long int j = 0; j < 3000000; j++) {  
			result += ( array[j] * array[j] ); 
		};
	}

	clock_t end = clock();

	double secs = (double) (end - start) / CLOCKS_PER_SEC;

	printf("result = %.2lf\navg time = %lf ms cpu time\n", result, secs / 1000 / TRIES);
	return 0;
}

у меня (core2 duo) показывает что-то вроде 0.000007 ms cpu time

Кстати, если собрать без -O2 то ваще в нули выходит.