testBufferAlloc.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // testBufferAlloc.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include <windows.h>
  5. #pragma  warning(disable: 4786)
  6. #include <map>
  7. #include "BufferAlloc.h"
  8. using namespace std;
  9. typedef multimap<unsigned __int64, char *> MultiMap;
  10. // Add by Freeway Chen in 2003.6.29
  11. inline unsigned __int64 XYToCoord(int X, int Y)
  12. {
  13.     unsigned __int64 ullResult;
  14.     ((unsigned *)&ullResult)[0] = X;
  15.     ((unsigned *)&ullResult)[1] = Y;
  16.     
  17.     return ullResult;
  18. }
  19. int main(int argc, char* argv[])
  20. {
  21. // //printf("Hello World!n");
  22. //    MultiMap TestMap;
  23. //    pair<MultiMap::iterator, MultiMap::iterator> TestRange;
  24. //
  25. //    TestMap.insert(MultiMap::value_type(XYToCoord(0,1), "test11"));
  26. //    TestMap.insert(MultiMap::value_type(1, "test12"));
  27. //    TestMap.insert(MultiMap::value_type(1, "test13"));
  28. //    TestMap.insert(MultiMap::value_type(2, "test21"));
  29. //    TestMap.insert(MultiMap::value_type(2, "test22"));
  30. //    TestMap.insert(MultiMap::value_type(2, "test23"));
  31. //
  32. //    MultiMap::iterator pPos;
  33. //    
  34. //    // 可以先调用  TestMap.lower_bound判断是否存在,然后再调用TestMap.upper_bound,取得上限
  35. //     
  36. //    TestRange = TestMap.equal_range(1);
  37. //
  38. //    for (pPos = TestRange.first; pPos != TestRange.second; ++pPos)
  39. //    {
  40. //        printf("pair<%I64d, %s>n", pPos->first, pPos->second);
  41. //    }
  42. //    printf("n", pPos->first, pPos->second);
  43. //
  44. //    TestRange = TestMap.equal_range(2);
  45. //
  46. //    for (pPos = TestRange.first; pPos != TestRange.second; ++pPos)
  47. //    {
  48. //        printf("pair<%I64d, %s>n", pPos->first, pPos->second);
  49. //    }
  50. //    printf("n", pPos->first, pPos->second);
  51. //
  52. //    TestRange = TestMap.equal_range(3);
  53. //
  54. //    for (pPos = TestRange.first; pPos != TestRange.second; ++pPos)
  55. //    {
  56. //        printf("pair<%I64d, %s>n", pPos->first, pPos->second);
  57. //    }
  58. //    printf("n", pPos->first, pPos->second);
  59. //
  60. //
  61. //    return true;
  62.     unsigned char *pTestArray[1024 * 64];
  63.     int i = 0;
  64.     int dwTickCount1 = 0;
  65.     int dwTickCount2 = 0;
  66.     int dwTickCount3 = 0;
  67.     int dwTickCount4 = 0;
  68.     BufferAlloc_Init();
  69.     dwTickCount1 = GetTickCount();
  70.     for (i = 0; i < 1024 * 64; i++)
  71.     {
  72.         pTestArray[i] = (unsigned char *)BufferAlloc_Alloc(1024);
  73.     }
  74.     
  75.     for (i = 0; i < 1024 * 64; i++)
  76.     {
  77.         BufferAlloc_Free(pTestArray[i], 1024);
  78.     }
  79.     for (i = 0; i < 1024 * 64; i++)
  80.     {
  81.         pTestArray[i] = (unsigned char *)BufferAlloc_Alloc(1024);
  82.     }
  83.     
  84.     for (i = 0; i < 1024 * 64; i++)
  85.     {
  86.         BufferAlloc_Free(pTestArray[i], 1024);
  87.     }
  88.     dwTickCount2 = GetTickCount();
  89.     BufferAlloc_UnInit();
  90.     dwTickCount3 = GetTickCount();
  91.     for (i = 0; i < 1024 * 64; i++)
  92.     {
  93.         pTestArray[i] = new unsigned char[1024];
  94.     }
  95.     
  96.     for (i = 0; i < 1024 * 64; i++)
  97.     {
  98.         delete []pTestArray[i];
  99.     }
  100.     for (i = 0; i < 1024 * 64; i++)
  101.     {
  102.         pTestArray[i] = new unsigned char[1024];
  103.     }
  104.     
  105.     for (i = 0; i < 1024 * 64; i++)
  106.     {
  107.         delete []pTestArray[i];
  108.     }
  109.     dwTickCount4 = GetTickCount();
  110.     printf(
  111.         "First TickCount = %d, Second TickCount = %dn", 
  112.         dwTickCount2 - dwTickCount1,
  113.         dwTickCount4 - dwTickCount3
  114.     );
  115. return 0;
  116. }