ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Procesador de Intel I5 extremadamente lento. AYUDA

Postea todo lo relacionado con el mundo de los microcontroladores aquí

Moderador: Junta Directiva

Responder
Avatar de Usuario
fusion
Usuario Avanzado
Usuario Avanzado
Mensajes: 387
Registrado: Mar Oct 09, 2007 2:12 pm
Nombre: Javier Lopez Segura
Ubicación: Madrid
Contactar:

Procesador de Intel I5 extremadamente lento. AYUDA

Mensaje por fusion » Lun Sep 25, 2017 4:24 pm

PORFAVOR, si alguno puede pasar el test a un RYZEN 7 lo agradecería!!

Resulta que tarda mucho en hacer divisiones.
Lo he probado en mi nuevo ordenador I5 y tampoco supera los 21 Mops!

Resultados:
=== Dual-Core AMD Opteron(tm) Processor 2220 1-2.8Ghz

======================================================================

Time for 100 Mega double divisions       time = 10.1054 = 10.3764 MOPs

Time for 100 Mega float  divisions       time =   9.714 = 10.7945 MOPs

Time for 100 Mega double multiplications time = 0.641829 = 163.373 MOPs

Time for 100 Mega double sums            time = 0.657963 = 159.367 MOPs

Time for 100 Mega double sqrt            time = 1.74466 =  60.102 MOPs

Time for 100 Mega double sin             time = 2.43805 = 43.0087 MOPs

Time for 100 Mega double log             time =  1.3058 = 80.3017 MOPs

Time for 100 Mega int sums               time = 0.356066 = 294.489 MOPs

Time for 100 Mega int <<                 time = 0.343526 = 305.239 MOPs

Time for 100 Mega int divisions          time = 1.76286 = 59.4814 MOPs

Time for 100 Mega int multiplications    time = 0.354854 = 295.495 MOPs

Time for 100 Mega int sum+mult           time = 0.364358 = 287.787 MOPs

======================================================================



=== E5-1620 v3 3.5Ghz ================================================
======================================================================
Time for 100 Mega double divisions       time =   5.242 = 20.0034 MOPs
Time for 100 Mega double divisions (20x) time =   0.399 = 262.801 MOPs
Time for 100 Mega float  divisions       time =   4.676 = 22.4246 MOPs
Time for 100 Mega double multiplications time =   0.153 = 685.344 MOPs
Time for 100 Mega double sums            time =   0.101 = 1038.19 MOPs
Time for 100 Mega double sqrt            time =   0.693 =  151.31 MOPs
Time for 100 Mega double sin             time =   7.008 = 14.9626 MOPs
Time for 100 Mega double log             time =   8.358 = 12.5458 MOPs
Time for 100 Mega int sums               time =   0.026 = 4032.98 MOPs
Time for 100 Mega int <<                 time =   0.056 = 1872.46 MOPs
Time for 100 Mega int divisions          time =   0.743 = 141.127 MOPs
Time for 100 Mega int multiplications    time =   0.109 = 961.996 MOPs
Time for 100 Mega int sum+mult           time =    0.06 = 1747.63 MOPs
======================================================================

======================================================================
Time for 100 Mega double divisions       time =   5.199 = 20.1688 MOPs
Time for 100 Mega double divisions (20x) time =   0.706 = 148.524 MOPs
Time for 100 Mega float  divisions       time =   4.621 = 22.6915 MOPs
Time for 100 Mega double multiplications time =   0.154 = 680.894 MOPs
Time for 100 Mega double sums            time =   0.103 = 1018.03 MOPs
Time for 100 Mega double sqrt            time =   0.684 = 153.301 MOPs
Time for 100 Mega double sin             time =   8.202 = 12.7844 MOPs
Time for 100 Mega double log             time =  14.608 = 7.17809 MOPs
Time for 100 Mega int sums               time =   0.032 =  3276.8 MOPs
Time for 100 Mega int <<                 time =   0.056 = 1872.46 MOPs
Time for 100 Mega int divisions          time =   0.807 = 129.935 MOPs
Time for 100 Mega int multiplications    time =   0.097 = 1081.01 MOPs
Time for 100 Mega int sum+mult           time =   0.036 = 2912.71 MOPs
======================================================================

=== I7-Q720    1.6GHz ================================================
======================================================================
Time for 100 Mega double divisions       time = 10.9031 =  9.6172 MOPs
Time for 100 Mega double divisions (20x) time = 1.14586 = 91.5102 MOPs
Time for 100 Mega float  divisions       time = 11.2313 = 9.33619 MOPs
Time for 100 Mega double multiplications time = 0.595324 = 176.135 MOPs
Time for 100 Mega double sums            time = 0.483892 = 216.696 MOPs
Time for 100 Mega double sqrt            time =  1.4338 = 73.1324 MOPs
Time for 100 Mega double sin             time = 2.27436 = 46.1043 MOPs
Time for 100 Mega double log             time = 1.59232 =  65.852 MOPs
Time for 100 Mega int sums               time = 0.324371 = 323.264 MOPs
Time for 100 Mega int <<                 time = 0.337373 = 310.806 MOPs
Time for 100 Mega int divisions          time = 1.07184 = 97.8293 MOPs
Time for 100 Mega int multiplications    time = 0.390291 = 268.665 MOPs
Time for 100 Mega int sum+mult           time = 0.363438 = 288.516 MOPs
======================================================================
======================================================================
A ver si podeis hacer correr el codigo de abajo en un Ryzen 7!!!
Compuila bien en linux y windows.
#include <iostream>
#include <string.h> //strcpy strcat
#include <stdio.h> //fopen
#include <math.h> //sqrt, sin
#include <time.h>	//clock(), time_t
#pragma warning(disable:4996) //disable deprecateds
using namespace std;

#define _PRINT_RESULT


time_t start,stop;char null_char='\0';
//Use empty timer() to reset start time:
#ifndef _PRINT_RESULT
void timer(char *title=&null_char,int data_size=1){    	stop=clock();	if (*title) printf("%s time = %7lg = %7lg MOPs\n",title,(double) (stop-start)/(double) CLOCKS_PER_SEC, 1e-6*data_size/( (double)(stop-start)/(double)CLOCKS_PER_SEC ) ); 	start=clock(); }
#else
char string_timer[128*1024],str1[1024];
void timer(char *title=&null_char,int data_size=1)
{
	stop=clock();	
	if (*title) 
	{
		sprintf(str1,"%s time = %7lg = %7lg MOPs\n",title,(double) (stop-start)/(double) CLOCKS_PER_SEC, 1e-6*data_size/( (double)(stop-start)/(double)CLOCKS_PER_SEC ) ); 	
		cout<<str1;   strcat(string_timer,str1);
	}
	start=clock(); 
}
#endif

int main()
{
	cout << "Perform test in Release mode. Results will be wrong in debug mode" <<endl;
	int isum=0,size=100*1024*1024;
	timer();//void timer resets timer!
	double dsum=1.0,d2=1.111;
//	for (int i=0;i<size/20;i++)
//		dsum=2.0/(dsum+3.0/(dsum+4.0/(dsum+5.0/(dsum+6.0/(dsum+7.0/(dsum+8.0/(dsum+9.0/(dsum+10.0/(dsum+11.0/(dsum  +12.0/(dsum+13.0/(dsum+14.0/(dsum+15.0/(dsum+16.0/(dsum+17.0/(dsum+18.0/(dsum+19.0/(dsum+21.0/(dsum+27.0/(dsum+2.0 ;
//	timer("Time for 100 Mega double divisions x20  ",size);
	for (int i=0;i<size;i++)
		dsum/=d2;
	timer("Time for 100 Mega double divisions      ",size);
	for (int i=0;i<size/20;i++)
	{
		dsum=1.1/(dsum+2.2/(dsum+2.3/(dsum+2.4/(dsum+2.5/(dsum+2.6/(dsum+2.7/(dsum+2.8/(dsum+2.9/(dsum+2.1/(dsum+2.2/(dsum+2.3/(dsum+2.4/(dsum+2.5/(dsum+2.6/(dsum+2.7/(dsum+2.8/(dsum+2.9/(dsum+3.1/(dsum+1.111)))))))))))))))))));
	}
	timer("Time for 100 Mega double divisions (20x)",size);
	float fsum=1.0f;
	for (int i=0;i<size;i++)
		fsum=fsum/1.1111f;
	timer("Time for 100 Mega float  divisions      ",size);
	for (int i=0;i<size;i++)
		dsum=dsum*d2;
	timer("Time for 100 Mega double multiplications",size);
	for (int i=0;i<size;i++)
		dsum=dsum+d2;
	timer("Time for 100 Mega double sums           ",size);
	for (int i=0;i<size;i++)
		dsum=sqrt(dsum);
	timer("Time for 100 Mega double sqrt           ",size);dsum+=1.01;
	for (int i=0;i<size;i++)
		dsum=sin(dsum);
	timer("Time for 100 Mega double sin            ",size);dsum+=1.01;
	for (int i=0;i<size;i++)
		dsum=log(dsum+2.0);
	timer("Time for 100 Mega double log            ",size);dsum+=1.01;
	for (int i=0;i<size;i++)
		isum+=i;
	timer("Time for 100 Mega int sums              ",size);
	for (int i=0;i<size;i++)
		isum<<=i;
	timer("Time for 100 Mega int <<                ",size);
	isum+=1;
	for (int i=1;i<size+1;i++)
		isum/=i;
	timer("Time for 100 Mega int divisions         ",size);
	for (int i=1;i<size+1;i++)
		isum*=i;
	timer("Time for 100 Mega int multiplications   ",size);
	for (int i=1;i<size+1;i++)
		isum=isum*2+i;
	timer("Time for 100 Mega int sum+mult          ",size);

#ifdef _PRINT_RESULT
	FILE *str=fopen("timer result.txt","a");
	fprintf(str,"\n======================================================================\n");
	fprintf(str,"%s",string_timer);
	fprintf(str,  "======================================================================\n");
	fclose(str);
#endif

	cout<<endl<<" Reject following data (done to force for loops be performed after compiler optimizations):  ";
	cout<<isum<<dsum<<fsum<<endl;//to force for() be done on isum
	cout<<"=== FIN ==="<<endl;getchar();
	return 1;
}



Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados