在IE11中,Breeze的executeQuery比Chrome慢得多

时间:2017-03-06 22:45:05

标签: javascript performance google-chrome internet-explorer-11 breeze

我有一个使用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可以。

1 个答案:

答案 0 :(得分:1)

事实证明,Bluebird(我正在使用Promises)获得了很长的堆栈跟踪。这在IE11中非常慢。

我在项目中关闭了long stack traces,速度现在已经可以接受了。