[求助]有熱心人能用伺服器幫我跑下levidb8的測試嗎?

眾所周知, 我在寫levidb. 兩個月前, 經過一位業內資深人士的點撥, 我意識到了嚴重的架構問題, 又經過不斷的重寫與思考, levidb化身levidb8回來啦~ 最大的改進是用了SSE4.2的_mm_minpos_epu16還真正支持了並發讀寫遍歷.

由於我目前只有兩台筆記本, 一台MBP, 一台聯想Y70. 自己跑分是終於超過rocksdb了(幅度還挺可觀的), 但不知道在伺服器上表現如何. 我以人格和源代碼保證沒有後門, 所以希望各位可以沒有顧慮地幫我測試. 要測的程序我已經寫了, 修改下CMake腳本的一個變數就好了.

項目在: JimChengLin/levi-db 文檔還沒寫, 如何測試看本文.

依賴:

  • zstd
  • JeMalloc
  • RocksDB(僅用於測試對比)

然後比較麻煩的是測試的數據集是亞馬遜的電影評論, 要從Web data: Amazon movie reviews下載, 比較大(3GB). 我用迅雷下是可以滿網速的.

測試步驟:

  • git clone
  • 修改CMakeLists.txt的第18行, 把OFF修改成ON
  • 修改bench目錄下的db_bench.cpp, 把src_fname的值改成亞馬遜電影評論的位置, 應該是個叫"movies.txt"的文件
  • mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release
  • make levidb8 -j2
  • 如果運氣好的話(滑稽), 依賴和鏈接都沒有報錯, 那麼 ./levidb8(因為要寫/tmp, 有時候要sudo, 但有時候又不要, 我也不知道為什麼. 你可以sudo或者把測試資料庫的路徑改成當前目錄)

然後應該可以看到, levidb8和rocksdb的對比數據, 比如

levidb_write_bench took 732 millisecondsnrocksdb_write_bench took 2004 millisecondsnlevidb_read_bench took 314 millisecondsnrocksdb_read_bench took 1910 millisecondsnlevidb scan 116151215nlevidb_scan_bench took 179 millisecondsnrocksdb scan 116151215nrocksdb_scan_bench took 189 millisecondsn

時間還充沛的話, 可以把db_bench.cpp的第21行test_times改成100W試試, 含義是測試100W條數據. 我怕卡, 默認就測試10W條.

結果知乎私信或者發郵箱(jimzuolin@gmail.com)給我, 都可以.


提前謝謝幫忙的諸位!!! 感謝鼓勵過我的幾位!!!


推薦閱讀:

怎樣獲取三維點集中平均距離最大的四個點?
成功人士從不刷Leetcode(3)
什麼是演算法和數據結構。
[數據結構]走近Zkw線段樹(一)

TAG:数据库 | 算法与数据结构 | C |