二分查找性能试验

Intro

  • redis 号称是高性能的字典服务。redis 的底层常用的数据结构 (intset,skiplist 等大量使用二分查找技术)。 现在想看一下 二分查找到底有多块

code

#include <stdio.h>

int binarySearch(int arr[], int l, int r, int x)
{
    if (r >= l) {
        int mid = l + (r - l) / 2;
        if (arr[mid] == x)
            return mid;
        if (arr[mid] > x)
            return binarySearch(arr, l, mid - 1, x);
        return binarySearch(arr, mid + 1, r, x);
    }
    return -1;
}

int main(int argc, char* agrv[]) {

 // 生成测试所用的数组
  int arr[1000], a[10]={1,2, 4,5 , 7,8, 9,10, 17, 21};
    for (int i = 0; 100 > i; i++) {
      for (int j =1; 11 > j; j++) {
        if (i*10 +j > 999) {
            break;
        }
        arr[i*10+j] = i*50 + arr[j-1];
    }
  }

  // 二分查找
    for (int i = 0; 200 >i ;i++) {
      for (int j = 0; 1000> j; j++) {
        binarySearch(arr, 0, 999, arr[j]);
      }
    }
  return 0;
}
  • 结论: 对 1000 个数字上执行 20 万次 二分查找只用了 0.022 秒
posted @ 2020-06-15 10:52  tmortred  阅读(130)  评论(0编辑  收藏  举报