我有一个使用BreezeJs的应用程序,它在Chrome上运行良好。
但是当我在IE上测试它时,BreezeJs的executeQuery需要更长的时间来运行。
例如,在Chrome上运行的查询需要86毫秒才能运行。在IE上运行完全相同的服务 完全相同的查询需要 443 毫秒才能运行。
这是不断重复的,无论哪个首先运行都无关紧要。
这只是因为Chrome浏览器速度更快?
更重要的是,我能做些什么让IE11更接近Chrome的运行时间?
只是意味着它很有用,这就是我的代码看起来像这个调用:
private getEntity<TEntityInterface extends breeze.Entity>(query: breeze.EntityQuery): Promise<TEntityInterface> {
let startTime = performance.now();
let queryPromise = new Promise<TEntityInterface>((resolve, reject) => {
this.entityManager.executeQuery(query).then(queryResult => {
let stopTime = performance.now();
console.debug(`getEntity Time ${stopTime - startTime}`);
if (queryResult && queryResult.results && queryResult.results.length > 0) {
let result = <TEntityInterface>queryResult.results[0];
resolve(<any>result);
} else
throw Error('Error retreiving entity');
}).catch(error => {
let errorMessage = 'Failed to get value from Database';
this.queryFailed(errorMessage, error);
reject(errorMessage);
});
});
return queryPromise;
}
更新:我使用JQuery Ajax调用测试运行,IE11和Chrome之间的通话时间相似。所以这似乎只是一个Breeze JS问题。
我的猜测是,Breeze只是做了很多javascript,IE11无法快速完成,但Chrome可以。
答案 0 :(得分:1)
事实证明,Bluebird(我正在使用Promises)获得了很长的堆栈跟踪。这在IE11中非常慢。
我在项目中关闭了long stack traces,速度现在已经可以接受了。