想把一組char a[4096]的陣列拷貝到short b[6][256]中,嘗試過用迴圈移位的方式,還用中間變數short c[2048]的方式。得出的結論:
1. 移位方式效率最低
2. 借用中間變數,變數如果是區域性棧中,那麼速度比全域性的中間變數速度快,缺點是怕棧溢位。
驗證**如下:
//file name testcpyspeed.c
#include
#include
#include
#include
#define mtw_virtutalchnums (2)
#define mtw_phychnums (6)
#define mtw_maxchnums (mtw_virtutalchnums+mtw_phychnums)
#define mtw_samplesszie (256)
typedef short int16_t;
int16_t mic_data[mtw_phychnums][mtw_samplesszie] = ;
int16_t *mic[mtw_phychnums] = ;
//int16_t ref_fft[mtw_samplesszie] = ;
int16_t ref_fft[mtw_samplesszie] = ;
int16_t output[mtw_samplesszie] = ;
static int mmap_mwsrchannel(char *databuff,int len)
for( i = 0; i < 256; i++)
return0;}
void record_to_buff(char *buff,int len)
}int main(int argc,char *argv)
return
0;}
linjuntao@linjuntao:~/desktop/proctice/chartoshort$ cat teststos.c
#include
#include
#include
#include
#define mtw_virtutalchnums (2)
#define mtw_phychnums (6)
#define mtw_maxchnums (mtw_virtutalchnums+mtw_phychnums)
#define mtw_samplesszie (256)
typedef
short int16_t;
int16_t mic_data[mtw_phychnums][mtw_samplesszie] = ;
int16_t *mic[mtw_phychnums] = ;
//int16_t ref_fft[mtw_samplesszie] = ;
int16_t ref_fft[mtw_samplesszie] = ;
int16_t output[mtw_samplesszie] = ;
static
int mmap_mwsrchannel(char *databuff,int len)
int16_t data[2048];
memcpy(data,databuff,4096);
for( i = 0; i < 256; i++)
return0;}
void record_to_buff(char *buff,int len)
}int main(int argc,char *argv)
return
0;}
linjuntao@linjuntao:~/desktop/proctice/chartoshort$ cat teststoglobals.c
#include
#include
#include
#include
#define mtw_virtutalchnums (2)
#define mtw_phychnums (6)
#define mtw_maxchnums (mtw_virtutalchnums+mtw_phychnums)
#define mtw_samplesszie (256)
typedef
short int16_t;
int16_t mic_data[mtw_phychnums][mtw_samplesszie] = ;
int16_t *mic[mtw_phychnums] = ;
//int16_t ref_fft[mtw_samplesszie] = ;
int16_t ref_fft[mtw_samplesszie] = ;
int16_t output[mtw_samplesszie] = ;
int16_t data[2048];
static
int mmap_mwsrchannel(char *databuff,int len)
memcpy(data,databuff,4096);
for( i = 0; i < 256; i++)
return0;}
void record_to_buff(char *buff,int len)
}int main(int argc,char *argv)
return
0;}
//編譯:
cc testcpyspeed.c -o testor ;gcc teststos.c -o test16_16 ; gcc teststoglobals.c -o teststoglobals
//驗證:
linjuntao@linjuntao:~/desktop/proctice/chartoshort$ time ./testor 200000
real
0m1.999s
user 0m1.996s
sys 0m0.000s
linjuntao@linjuntao:~/desktop/proctice/chartoshort$ time ./test16_16 200000
real
0m1.661s
user 0m1.660s
sys 0m0.000s
linjuntao@linjuntao:~/desktop/proctice/chartoshort$ time ./teststoglobals 200000
real
0m1.658s
user 0m1.656s
sys 0m0.000s
linjuntao@linjuntao:~/desktop/proctice/chartoshort$ time ./test16_16 4000000
real
0m33.031s
user 0m33.028s
sys 0m0.000s
linjuntao@linjuntao:~/desktop/proctice/chartoshort$ time ./teststoglobals 4000000
real
0m33.157s
user 0m33.156s
sys 0m0.000s
linjuntao@linjuntao:~/desktop/proctice/chartoshort$ time ./testor 4000000
real
0m40.298s
user 0m40.292s
sys 0m0.004s
如果執行頻率比較高,還是使用區域性臨時變數拷貝比較快。 測試硬碟速度
hdparm t dev md0 br0ken7 2362833 2008 02 01 21 29 46 三塊盤做的raid0速度居然比四塊做的快 br0ken7 2362833 2008 02 01 21 29 57 hdparm t dev md0 dev md0 timing buffered...
速度測試 VBA EXCEL
需求 速度測試 vba excel 單元格選取 結論前置 使用的方法和物件越少越好,定位越精確,耗時越長 結論資料 塊 vbnet sub 速度測試 單元格選取 dim i as integer dim t as date dim t1 as string dim t2 as string t ti...
MySQL測試SQL執行的速度測試
引言 在mysql中如何測試單個sql的執行時間,是非常有助於我們理解其中的問題的,本文將介紹如何定位sql.的使用時間和執行計畫。1.檢視mysql關於profile的設定 show variables like pro 查驗mysql中profile的設定選項 上圖中的profiling標識著的...