我测量了这两个函数的执行时间:
使用Chrome配置文件工具测量了以下方法的执行情况:
// jQuery GREP function
function alternative1(words, wordToTest) {
return $.grep(words, function(word) {
return wordToTest.indexOf(word) != -1;
});
}
// Native javascript FILTER function
function alternative2(words, wordToTest) {
return words.filter(function(word) {
return wordToTest.indexOf(word) != -1;
});
}
Run Code Online (Sandbox Code Playgroud)
数组由words100万个随机生成的字符串构成.每种方法运行20次.令我惊讶的是jQuerygrep功能更快.
执行时间(20次执行):
你可以在这个jsFidle上重复测量- 执行需要一些时间,所以请耐心等待.
有没有解释为什么jQuery grep函数比原生 JavaScript 过滤器功能更快?
PS:这个问题的灵感来自于这个答案.
在尝试回答这个问题时,我遇到了一个奇怪的行为(这是不一样的:他的迭代太少,我的太多了):
HTML:
<button id="go">it will be legend...</button>
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)
JS:
var output = document.getElementById('output');
document.getElementById('go').onclick = function() {
output.textContent += 'wait for it...';
for (var i=0; i<3000000000; i++) {
var unused = i; // don't really care
}
output.textContent += ' dary!';
};
Run Code Online (Sandbox Code Playgroud)
循环需要几秒钟才能执行,因为它有3,000,000,000次迭代.
单击按钮后,我的预期:
wait for it... 出现dary! 出现实际发生了什么:
wait for it... dary!一起出现知道为什么会出现这种行为吗?
自己检查:小提琴.
我上传了一个包含1000行的excel文件,默认情况下我只有2分钟的执行时间,那时我可以上传400条记录.我收到这个错误Maximum execution time of 120 seconds exceeded
我如何在yii2框架中修改这段时间?
Mathematica中存在一个奇怪的错误,至少从版本5.1开始,并持续到版本7.
Module[{f, L}, L = f[];
Do[L = f[L, i], {i, 10^4}]] // Timing
Run Code Online (Sandbox Code Playgroud)
{0.015, Null}
Module[{weirdness, L}, L = weirdness[];
Do[L = weirdness[L, i], {i, 10^4}]] // Timing
Run Code Online (Sandbox Code Playgroud)
{2.266, Null}
是什么导致这个?这是一个哈希问题吗?
在版本8中修复了吗?
除了测试之外,有没有办法知道哪些符号名称导致减速?
我有一个问题.我正在写一个基准测试,我有一个功能,而不是在2秒或大约5分钟后完成(取决于输入数据).如果执行时间超过3秒,我想停止该功能......
我该怎么做?
非常感谢!
我正在尝试使用TimingLogger来检查特定方法及其语句所消耗的时间.但Android TimingLogger无法打印日志.
使用set_time_limit()或max_execution_time,并不"真正"限制(在Windows上除外)执行时间,因为如PHP手册中所述:
注意:
该set_time_limit()函数的功能和配置指令 的max_execution_time只影响脚本本身的执行时间.在确定脚本运行的最长时间时,不会包括在执行脚本之外发生的任何活动,例如使用system()的系统调用,流操作,数据库查询等.在测量时间真实的Windows上,情况并非如此.
在PHP评论中提出了一个解决方案,它具有像我正在寻找的"实际"执行时间限制,但我发现它不清楚/令人困惑.
我已经开发并运行了像'Facebook'这样的社交网站.
本网站使用PHPFox v3.0.7(在php中创建的社交网络平台)开发.
网站功能运作良好,没有问题.
我在网站上遇到的主要,重大和严重的问题是执行速度慢.对于任何类型的操作,它需要花费太多时间,用户必须等待那么长时间.这确实激怒了用户并影响了网站的性能.
所以,我研究了'Facebook' - 用PHP开发的世界上最大的社交网站.如果"Facebook"可以快速执行,尽管用户负载很重,而且连续操作为什么我的网站不能?
首先是网站是使用一个名为'PHPFox'的框架开发的,所以整个数据库设计,缓存和所有其他东西都由框架本身管理,我不能改变框架的设置但最终我想提高执行速度我的网站.
那我该怎么做呢?如果您有任何一流的解决方案,请为我提供指导.
任何形式的帮助将受到高度赞赏.
如果您对我遇到的问题有任何疑问,请随时问我.
谢谢.
我无法解释为什么我的性能测试会在两种不同类型的运行中返回显着不同的结果.
重现问题的步骤:
node practice1.generatornode practice1.performance-testpractice1.generator应生成一个test-data.json文件,并将一些搜索算法执行时间记录到控制台中.之后,practice1.performance-test从test-data.json相同数据读取并执行完全相同的评估功能.
我机器上的输出与此类似:
> node practice1.generator
Generate time: 9,307,061,368 nanoseconds
Total time using indexOf : 7,005,750 nanoseconds
Total time using for loop : 7,463,967 nanoseconds
Total time using binary search : 1,741,822 nanoseconds
Total time using interpolation search: 915,532 nanoseconds
> node practice1.performance-test
Total time using indexOf : 11,574,993 nanoseconds
Total time using for loop : 8,765,902 nanoseconds
Total time using binary …Run Code Online (Sandbox Code Playgroud) 问题是关于在各种输入大小的执行时间序列中获得一些不连续性.具体来说,我一直在尝试这段代码:
long double a[2000][2000];
int iter = 0;
int main(int argc, char const *argv[]){
istringstream is(argv[1]);
int N;
is >> N;
for(int i = 0; i <= N; ++i){
for (int J = 0; J <= N; ++J){
a[i][J] = (rand()%3+1)*(rand()%4+1);
}
}
clock_t clk= clock();
for(int k = 0; k < N; ++k){
for(int i = k+1; i < N; ++i){
a[i][k] = a[i][k]/a[k][k];
}
for(int i = k+1; i < N; ++i){
for(int j = k+1; j < …Run Code Online (Sandbox Code Playgroud) execution-time ×10
javascript ×3
php ×3
android ×1
android-log ×1
benchmarking ×1
c# ×1
c++ ×1
caching ×1
ecmascript-6 ×1
jquery ×1
loops ×1
native ×1
node.js ×1
performance ×1
phpfox ×1
timing ×1
web ×1
yii2 ×1