报告响应式查询的数量而不是传统缓存
This commit is contained in:
@@ -756,11 +756,13 @@ export class QuerySystem {
|
||||
|
||||
/**
|
||||
* 清理查询缓存
|
||||
*
|
||||
*
|
||||
* 用于外部调用清理缓存,通常在批量操作后使用。
|
||||
* 注意:此方法也会清理响应式查询缓存
|
||||
*/
|
||||
public clearCache(): void {
|
||||
this.clearQueryCache();
|
||||
this.clearReactiveQueries();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -856,7 +858,7 @@ export class QuerySystem {
|
||||
}))
|
||||
},
|
||||
cacheStats: {
|
||||
size: this.queryCache.size,
|
||||
size: this._reactiveQueries.size,
|
||||
hitRate: this.queryStats.totalQueries > 0 ?
|
||||
(this.queryStats.cacheHits / this.queryStats.totalQueries * 100).toFixed(2) + '%' : '0%'
|
||||
}
|
||||
|
||||
@@ -449,22 +449,24 @@ describe('QuerySystem - 查询系统测试', () => {
|
||||
expect(parseFloat(stats.cacheStats.hitRate)).toBeLessThanOrEqual(100);
|
||||
});
|
||||
|
||||
test('缓存命中率应该在重复查询时提高', () => {
|
||||
test('缓存命中率应该在重复查询时保持高命中率', () => {
|
||||
entities[0].addComponent(new PositionComponent(10, 20));
|
||||
entities[1].addComponent(new PositionComponent(30, 40));
|
||||
|
||||
// 第一次查询(缓存未命中)
|
||||
// 第一次查询(创建响应式查询缓存)
|
||||
querySystem.queryAll(PositionComponent);
|
||||
let stats = querySystem.getStats();
|
||||
const initialHitRate = parseFloat(stats.cacheStats.hitRate);
|
||||
|
||||
// 重复查询(应该命中缓存)
|
||||
// 重复查询(应该持续命中响应式查询缓存)
|
||||
for (let i = 0; i < 10; i++) {
|
||||
querySystem.queryAll(PositionComponent);
|
||||
}
|
||||
|
||||
stats = querySystem.getStats();
|
||||
expect(parseFloat(stats.cacheStats.hitRate)).toBeGreaterThan(initialHitRate);
|
||||
// 响应式查询永远100%命中,这是期望的优化效果
|
||||
expect(parseFloat(stats.cacheStats.hitRate)).toBeGreaterThanOrEqual(initialHitRate);
|
||||
expect(parseFloat(stats.cacheStats.hitRate)).toBe(100);
|
||||
});
|
||||
|
||||
test('应该能够清理查询缓存', () => {
|
||||
|
||||
Reference in New Issue
Block a user