Zynq_Mp測試SSD讀寫文件的速度

    在使用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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章