在使用SSD時,首先由Linux系統識別/dev/sda設備文件節點,以下是測試步驟。
-
掛載/dev/sda
① mkfs.vfat -F 32 /dev/sda
② mount /dev/sda /mnt
③ cd /mnt 進入mnt目錄,相當於進入SSD目錄
-
測試時間
int gettimeofday(struct timeval tv,struct timezone *tz) 這個函數用於獲取從今日凌晨到現在的時間差,常用於事件的耗時。
struct timeval { int tv_sec;int tv_usec;}
linux測試時間差的程序如下:
double GetTime(void)
{
struct timeval t;
gettimeofday(&t, NULL);
return (t.tv_sec + 1E-6 * t.tv_usec);
}
-
讀寫速度的程序
#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#define DATA_SIZE 1024*1024*1024
#define M_DATA_SIZE 1024*1024
double GetTime(void)
{
struct timeval t;
gettimeofday(&t, NULL);
return (t.tv_sec + 1E-6 * t.tv_usec);
}
int main()
{
unsigned int i;
unsigned int SSDReadRate = 0;
unsigned int SSDWriteRate = 0;
double TimeReadStart = 0.00;
double TimeReadTotal = 0.00;
double TimeWriteStart = 0.00;
double TimeWriteTotal = 0.00;
unsigned char SSDReadData[1024] = {0};
unsigned char SSDWriteData[1024] = {0};
FILE *pWrite_FILE = NULL;
FILE *pRead_FILE = NULL;
for(i=0; i<1024; i++)
{
SSDWriteData[i] = i % (0xFF);
}
//Write Process
TimeWriteStart = GetTime();
pWrite_FILE = fopen("SSD_Write.bin", "wb+");
for(i=0; i<(DATA_SIZE/1024); i++)
{
fwrite(SSDWriteData, sizeof(unsigned char), 1024, pWrite_FILE);
}
fclose(pWrite_FILE);
pWrite_FILE = NULL;
TimeWriteTotal = GetTime() - TimeWriteStart;
printf("Write SSD 1G data in %.3f secs \n", TimeWriteTotal);
SSDWriteRate = (unsigned int)(1024 / TimeWriteTotal);
printf("The Rate of SSD Write data is %dM/sec.\n", SSDWriteRate);
//Read Process
TimeReadStart = GetTime();
pRead_FILE = fopen("SSD_Write.bin", "rb" );
if(pRead_FILE == NULL)
{
printf("Open file failure.\n");
}
for(i=0; i<(DATA_SIZE/1024); i++)
{
fread(SSDReadData, sizeof(unsigned char), 1024, pRead_FILE);
}
fclose(pRead_FILE);
pRead_FILE = NULL;
TimeReadTotal = GetTime() - TimeReadStart;
printf("Read SSD 1G data in %.3f secs \n", TimeReadTotal);
SSDReadRate = (unsigned int)(1024 / TimeReadTotal);
printf("The Rate of SSD Read data is %dM/sec.\n", SSDReadRate);
return 0;
}