/init이 nBase-ARC만 미리 채워서, 워밍업된 캐시와 빈 캐시를 나란히 놓고 비교했다
#초기화 루프는 MySQL에 1만 행을 넣으면서 같은 값을 nbase에도 set한다. arcus에 대한 set은 어디에도 없다. 따라서 부하 테스트 시작 시점에 nBase-ARC는 히트율 100%, arcus는 히트율 0%로 출발한다.
결과가 그대로 나온다. nbase 291.5 TPS / 평균 19.39ms / 16,355건, arcus 24.0 TPS / 249.83ms / 1,343건. 12배 차이는 nBase-ARC가 arcus보다 12배 빠르다는 뜻이 아니라, 한쪽만 캐시가 차 있었다는 뜻이다. 보고서에는 이 비대칭에 대한 언급이 없다.
@app.route('/init', methods=['GET'])
def init():
cursor.execute('drop table if exists testset');
cursor.execute('create table testset ( id int, data int );')
for i in range(testsize):
v = random.randint(0, testsize)
cursor.execute('insert into testset values(%s,%s)'%(i + 1, v))
nbase.set(i + 1, v) ← nbase만 워밍업. arcus.set 은 없다
connection.commit()
return 'Initialization finished'