欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1797|回復: 4
打印 上一主題 下一主題
收起左側

第三方跨平臺cpu性能測試,我的第一個開源項目求助

[復制鏈接]
跳轉到指定樓層
樓主
ID:384624 發表于 2018-8-9 15:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人新手上路,搞了一個開源項目,目前這個開源項目已能在x86,arm,win,安卓上都能運行,但是在51單片上死活通不過,
本人測試的平臺與處理器已達10多種了,包括手機,平板,路由器,電腦,
開源項目網址如下:https://gitee.com/test386/test
內有源碼與linux與win的可執行文件,同時也有10多種不同處理器,不同平臺的測試結果,

這里都是五一大神,幫我看一下,為何我的程序無法在keil上編釋通過多謝。
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5. #define INTEG_FUNC(x)  fabs(sin(x))
  6. double dclock(void);
  7. int main(int argc, char * argv[])
  8. {
  9.   clock_t start, finish;
  10.   double  duration;  
  11.   long * pi, * t, m, n, r, s;
  12.   int t0[][3] = {48, 32, 20, 24, 8, 4}, k0[][3] = {1, 1, 0, 1, 1, 1};
  13.   int n0[][3] = {18, 57, 239, 8, 57, 239}, d, i, j, k, p, q;

  14.   d = (argc > 1) ? (((i = atoi(argv[1])) < 0) ? 0 : i) : 9999;
  15.   q = (argc > 2) ? 1 : 0;
  16.   printf("%s\n\n", "pi calc..................................");
  17.   printf("pi= %s%d * arctg(1/%d) %s %d * arctg(1/%d) %s %d * arctg(1/%d) [%s]\n",
  18.     k0[q][0] ? "" : "-", t0[q][0], n0[q][0], k0[q][1] ? "+" : "-", t0[q][1],
  19.     n0[q][1], k0[q][2] ? "+" : "-", t0[q][2], n0[q][2], q ? "Stomer" : "Gauss");
  20.   if ((t = (long *)calloc((d += 5) + 1, sizeof(long))) == NULL) return 1;
  21.   if ((pi = (long *)calloc(d + 1, sizeof(long))) == NULL) return 2;

  22.   start = clock();

  23.   for (i = d; i >= 0; i--) pi[i] = 0;
  24.   for (p = 0; p < 3; p++) {
  25.     for (k=k0[q][p], n=n0[q][p], t[i=j=d]=t0[q][p], i--; i >= 0; i--) t[i] = 0;
  26.     for (r = 0, i = j; i >= 0; i--) {
  27.       r = (m = 10 * r + t[i]) % n;
  28.       t[i] = m / n;
  29.       k ? (pi[i] += t[i]) : (pi[i] -= t[i]);
  30.     }
  31.     while (j > 0 && t[j] == 0) j--;
  32.     for (k = !k, s = 3, n *= n; j > 0; k = !k, s += 2) {
  33.       for (r = 0, i = j; i >= 0; i--) {
  34.         r = (m = 10 * r + t[i]) % n;
  35.         t[i] = m / n;
  36.       }
  37.       while (j > 0 && t[j] == 0) j--;
  38.       for (r = 0, i = j; i >= 0; i--) {
  39.         r = (m = 10 * r + t[i]) % s;
  40.         m /= s;
  41.         k ? (pi[i] += m) : (pi[i] -= m);
  42.       }
  43.     }
  44.   }
  45.   for (n = i = 0; i <= d; pi[i++] = r) {
  46.     n = (m = pi[i] + n) / 10;
  47.     if ((r = m % 10) < 0) r += 10, n--;
  48.   }

  49.   printf("pi= %ld.", pi[d]);
  50.   for (i = d - 1; i >= 5; i--)
  51.     printf("%ld%s", pi[i], ((m = d - i + 5) % 65) ? ((m % 5) ? "" : " ") : "\n");
  52.   printf("%sDIGITS: %d\n", (m % 65) ? "\n" : "", d - 5);

  53. //_______________________________________
  54. // Loop counters and number of interior points
  55.    unsigned int ia, ja, Na;
  56.    // Stepsize, independent variable x, and accumulated sum
  57.    double  duration2;
  58.    double stepa, x_i, suma;
  59.    // Timing variables for evaluation   
  60.    double interval_begin = 0.0;
  61.    // Complete integral at
  62.    double interval_end = 2.0 * 3.141592653589793238;
  63.    // Start timing for the entire application
  64.    printf("     \n");
  65.    printf("    Number of    | Computed Integral | \n");
  66.    printf(" Interior Points |                   | \n");
  67.    for (ja=2;ja<27;ja++)
  68.    {
  69.     printf("------------------------------------- \n");
  70.      // Compute the number of (internal rectangles + 1)
  71.      Na =  1 << ja;
  72.      // Compute stepsize for Na-1 internal rectangles
  73.      stepa = (interval_end - interval_begin) / Na;
  74.      // Approx. 1/2 area in first rectangle: f(x0) * [stepa/2]
  75.      suma= INTEG_FUNC(interval_begin) * stepa / 2.0;
  76.      // Apply midpoint rule:
  77.      // Given length = f(x), compute the area of the
  78.      // rectangle of width stepa
  79.      // Suma areas of internal rectangle: f(xi + stepa) * stepa
  80.      for (ia=1;ia<Na;ia++)
  81.      {
  82.         x_i = ia * stepa;
  83.         suma += INTEG_FUNC(x_i) * stepa;
  84.      }
  85.      // Approx. 1/2 area in last rectangle: f(xN) * [stepa/2]
  86.      suma += INTEG_FUNC(interval_end) * stepa / 2.0;
  87.      printf(" %10d      |  %14e   | \n", Na, suma);
  88.    }
  89.   
  90.   
  91.    printf("     \n");
  92.   
  93.   
  94.     //_______________________________________
  95.   double  duration1;  
  96.   double  testa;
  97.   double  testb;
  98.     int  sum=0;
  99.     int  num=1;
  100.     int  sum2=0;
  101.     int  num2=2;
  102.         double   sqrt(double   x);
  103.   
  104.     while(num<=90000000){
  105.         sum=sum+num;
  106.         num=num+2;
  107.         testa=sqrt(sum);
  108.         testa=testa*num;
  109.     }
  110.     printf("Anti cheating verification code is=:%d\n",sum);
  111.     printf("Floating-point precision %.38lf\n", testa);
  112.     while(num2<=90000000){
  113.         sum2=sum2+num2;
  114.         num2=num2+2;
  115.         testb=sqrt(sum2);
  116.         testb=testb*num2;
  117.     }
  118.   printf("Anti cheating verification code is=%d\n",sum2);
  119.   printf("Floating-point precision %.38lf\n", testb);
  120.   finish = clock();
  121.   duration = (double)(finish - start) / CLOCKS_PER_SEC;  
  122.   printf("Total time %f seconds \n", duration);
  123.   printf("The less the time it is used, the more the performance becomes strongert!\n");
  124.   printf("Press Enter to exit\n");
  125.   sum = getchar( );
  126.   return 0;

  127.   
  128. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:155507 發表于 2018-8-9 20:49 來自觸屏版 | 只看該作者
你是想要用大學的數學題叫小學生去做,你想會有好結果嗎?
回復

使用道具 舉報

板凳
ID:384624 發表于 2018-8-10 08:54 | 只看該作者
angmall 發表于 2018-8-9 20:49
你是想要用大學的數學題叫小學生去做,你想會有好結果嗎?

我下步目標是用定時器,代替那個time.h功能,
然后對變量非法的問題,再想想辦法。
回復

使用道具 舉報

地板
ID:384885 發表于 2018-8-10 10:14 | 只看該作者
頂頂頂 看后面大佬的了
回復

使用道具 舉報

5#
ID:155507 發表于 2018-8-11 10:42 | 只看該作者
Time.h

  1. // Time.h for C51
  2. // Prototypes for time clock functions.
  3. #ifndef _Time_h
  4. #define _Time_h

  5. #ifndef _CLOCK_T_DEFINED
  6. #define _CLOCK_T_DEFINED
  7. typedef unsigned long clock_t;
  8. #endif
  9. #define CLOCKS_PER_SEC   1000
  10. #define CLK_TCK          1000
  11. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

  12. static clock_t        Clock_Tick=0;
  13. clock_t         clock( void );

  14. /*------------------------------------------------
  15.                                         定時器初始化子程序
  16. ------------------------------------------------*/
  17. void Init_Timer0(void)
  18. {
  19.         TMOD &= 0xF0;                //設置定時器模式
  20.         TMOD |= 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                     
  21.         TH0=0xFC;              //給定初值,這里使用定時器0 1毫秒@12.000MHz
  22.         TL0=0x18;                 //設置定時初值
  23.         EA=1;            //總中斷打開
  24.         ET0=1;           //定時器中斷打開
  25.         TF0 = 0;                //清除TF0標志
  26.         TR0=1;           //定時器開關打開 定時器0開始計時
  27. }
  28. /*------------------------------------------------
  29.                                 定時器中斷子程序
  30. ------------------------------------------------*/
  31. void Timer0_isr(void) interrupt 1 using 1
  32. {
  33.         TH0=0xFC;                  //重新賦值 1毫秒
  34.         TL0=0x18;
  35.        
  36.         Clock_Tick++;

  37. }

  38. clock_t        clock( void )
  39. {
  40.         return Clock_Tick;
  41. }

  42. #endif /* _Time_h */

復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表