跳至內容
Astera Technology

效能試驗的讀寫組合及共用紀錄要對

把所附紀錄真正執行,再核是否代表所需工作。

下載完整個案資料及參考答案 ↓

訂判斷及所需輸入

本例試驗要求 A 上十讀十寫。二十讀雖同樣二十次,沒有寫,並不相符。程序真的對本地集合執行讀寫,計兩類及涉及哪些鍵。

已填本地測試工作表
情況輸入 JSON
原例測試{"requiredReads":10,"requiredWrites":10,"requiredKey":"A","operations":[{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"}]}
下載可編輯 CSV ↓

跑所附比較

此處只核效能試驗輸入是否正確。重跑是順序執行,未量真並行競爭、吞吐或正式容量;配對了的材料仍要另跑並行試驗。

錯誤及所需輸出
路徑輸出 JSON
錯誤路徑{"reads":20,"writes":0,"valueA":0,"testInputMatches":true}
所需路徑{"reads":20,"writes":0,"valueA":0,"testInputMatches":false}
下載可編輯 CSV ↓
完整本地 Node24.14.1 程序
import assert from 'node:assert/strict';

const run=function run(i,corrected=true){
    const values=new Map([['A',0],['B',0]]);let reads=0,writes=0;const keys=new Set();
    for(const op of i.operations){keys.add(op.key);if(op.kind==='read'){values.get(op.key);reads++;}else if(op.kind==='write'){values.set(op.key,values.get(op.key)+1);writes++;}else throw new Error('Outside the fixed operation grammar');}
    const matches=corrected?reads===i.requiredReads&&writes===i.requiredWrites&&keys.size===1&&keys.has(i.requiredKey):reads+writes===i.requiredReads+i.requiredWrites;
    return {reads,writes,valueA:values.get('A'),testInputMatches:matches};
  };
const cases=[{"input":{"requiredReads":10,"requiredWrites":10,"requiredKey":"A","operations":[{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"}]},"corrected":false,"expected":{"reads":20,"writes":0,"valueA":0,"testInputMatches":true}},{"input":{"requiredReads":10,"requiredWrites":10,"requiredKey":"A","operations":[{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"},{"kind":"read","key":"A"}]},"corrected":true,"expected":{"reads":20,"writes":0,"valueA":0,"testInputMatches":false}},{"input":{"requiredReads":1,"requiredWrites":1,"requiredKey":"A","operations":[{"kind":"read","key":"A"},{"kind":"write","key":"A"}]},"corrected":true,"expected":{"reads":1,"writes":1,"valueA":1,"testInputMatches":true}},{"input":{"requiredReads":1,"requiredWrites":1,"requiredKey":"A","operations":[{"kind":"read","key":"B"},{"kind":"write","key":"B"}]},"corrected":true,"expected":{"reads":1,"writes":1,"valueA":0,"testInputMatches":false}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
下載可執行例子 ↓

按邊界依據作判斷

一讀一寫 A 符邊界材料,A 最後1;同數量在 B,A 仍0,違所需共用紀錄條件。

  1. 訂讀寫組合及鍵範圍
  2. 真正重跑所附操作
  3. 同時對數量及涉及紀錄

試驗材料相符,本身不是效能結果。

可編輯邊界輸入及結果
條件輸入 JSON預期輸出 JSON
所需共用紀錄讀寫{"requiredReads":1,"requiredWrites":1,"requiredKey":"A","operations":[{"kind":"read","key":"A"},{"kind":"write","key":"A"}]}{"reads":1,"writes":1,"valueA":1,"testInputMatches":true}
數量相同但紀錄不同{"requiredReads":1,"requiredWrites":1,"requiredKey":"A","operations":[{"kind":"read","key":"B"},{"kind":"write","key":"B"}]}{"reads":1,"writes":1,"valueA":0,"testInputMatches":false}
下載可編輯 CSV ↓

原例二十讀,可支持所需讀寫試驗嗎?

查看參考答案

不能,寫是零而非十。總數相同未確立所需讀寫組合或鍵分布。

相關資源