请教,数组等间隔循环取值的速度问题!! windows是多线程系统, 这样测试是不正确的很大可能在循环中CPU被系统或其他程序占用了, 所以时间差别比较大可以加大Num 使总时间至少到秒的级别程序本身运行速度应该没什么大差别的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题并不是你说的那样,该函数只是对采样间隔stepM不同而时间差别很大。对于某些stepM(如2220000,2224000)所需时间很少,而且测了几百次时间基本都是差不多的。而对于另外一些stepM,所需时间一直都是很多。如果说循环中CPU被系统或其他程序占用了,不可能上百次测试中每次都恰好是stepM = 2224000,2224000时CPU被占用较少,所以应该是其他问题!我估计是不是不同步长时,对内存的寻址问题? 给出测时间函数,CSDN上的资源!///////////////////////////////////////////////////////////////////////////// timecount.h : header file//#ifndef TIMECOUNT_H#define TIMECOUNT_Hstatic BOOL initFreq();double currTime();#endif/////////////////////////////////////////////////////////////////////////////timecount.cpp : implementation file#include "timecount.h"#include "stdafx.h"#include <windows.h>static LARGE_INTEGER freq;static BOOL initFreq(){if ( !QueryPerformanceFrequency( &freq) )return FALSE;elsereturn TRUE;}double currTime() //使用高精度计时器{LARGE_INTEGER performanceCount;double time;BOOL result;if (freq.QuadPart==0){BOOL bRet=initFreq();if (!bRet)return 0;}result=QueryPerformanceCounter( &performanceCount );time= performanceCount.HighPart * 4294967296.0 + performanceCount.LowPart;time=time / ( freq.HighPart * 4294967296.0 + freq.LowPart);return time;}///////////////////////////////////////////////////////////////////////////使用时double time,tmp;tmp = currTime();Sampling(char* arrayB,char* arrayA, int stepM,int Len,int Num);time = currTime() - tmp;/////////////////////////////////////////////////////////////////////////// 你自己测一下就知道了,我现在把Num*1000变成6000000,测试结果如下:////////////////////////////////////////////////////////////////////////////////Carrier Freq(Hz) Sampling Freq(Hz) Time(s)2220000 6000000 0.0272272221000 6000000 0.2175742222000 6000000 0.1892522223000 6000000 0.1464682224000 6000000 0.0251902225000 6000000 0.0640402226000 6000000 0.1206572227000 6000000 0.2295992228000 6000000 0.1323182229000 6000000 0.1157832230000 6000000 0.0522382231000 6000000 0.2196232232000 6000000 0.024192////////////////////////////////////////////////////////////////////////////////你和上面那个表对比一下,看看是不是stepM对应时间少的还是少,花时间多的还是多? 所以说花的时间还是和对应的取样间隔stepM有关系的,不是简单的CPU时间问题。 弱弱的问一下,你的测试不同Carrier Freq的时候,是自动的还是手动的?我的意思是放了一个变量自增那么测,还是手动输入的一次一次测? 如何实现Esc按下还原最大化了的对话框(详细实现过程,我刚入门!多谢了!) TURE与ture的有什么区别 VC 如何对编辑框中的文本描边? worksheet.saveas的用法 救命啊!!!RAS拨号--在没有插网线时拨号,出现678错误,连接状态无法恢复,跪求解决办法!!! 异步选择函数WSAAsyncSelect为什么放在析构函数中? 团队中有人不服从怎么办 (上海)出首几本vc,c++书籍.... 如何在对话框中添加菜单?? report风格的Listview,如何在Item中插入图标+Text 散分2000分+招聘!!!!! 关于ID,Handle 和对象的问题
stepM = 2224000,2224000时CPU被占用较少,所以应该是其他问题!我估计是不是不同步长时,对内存的寻址问题?
// timecount.h : header file
//
#ifndef TIMECOUNT_H
#define TIMECOUNT_Hstatic BOOL initFreq();
double currTime();#endif///////////////////////////////////////////////////////////////////////////
//timecount.cpp : implementation file
#include "timecount.h"
#include "stdafx.h"
#include <windows.h>static LARGE_INTEGER freq;static BOOL initFreq()
{
if ( !QueryPerformanceFrequency( &freq) )
return FALSE;
else
return TRUE;
}
double currTime() //使用高精度计时器
{
LARGE_INTEGER performanceCount;
double time;
BOOL result;
if (freq.QuadPart==0)
{
BOOL bRet=initFreq();
if (!bRet)
return 0;
}
result=QueryPerformanceCounter( &performanceCount );
time= performanceCount.HighPart * 4294967296.0 + performanceCount.LowPart;
time=time / ( freq.HighPart * 4294967296.0 + freq.LowPart);
return time;
}
///////////////////////////////////////////////////////////////////////////
使用时double time,tmp;
tmp = currTime();
Sampling(char* arrayB,char* arrayA, int stepM,int Len,int Num);
time = currTime() - tmp;
///////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
Carrier Freq(Hz) Sampling Freq(Hz) Time(s)
2220000 6000000 0.027227
2221000 6000000 0.217574
2222000 6000000 0.189252
2223000 6000000 0.146468
2224000 6000000 0.025190
2225000 6000000 0.064040
2226000 6000000 0.120657
2227000 6000000 0.229599
2228000 6000000 0.132318
2229000 6000000 0.115783
2230000 6000000 0.052238
2231000 6000000 0.219623
2232000 6000000 0.024192
////////////////////////////////////////////////////////////////////////////////
你和上面那个表对比一下,看看是不是stepM对应时间少的还是少,花时间多的还是多?