我正在考虑在我正在开始的新项目中使用ASP.NET,我想知道它是否比传统ASP更快.我已经使用经典多年了,从来没有碰到任何问题,但我真的想从三者中选出最快的.
谢谢你的帮助!
我正在做一些基准测试来测试一些东西.我有一个大量的1亿64位整数,我随机选择了1000万个并进行了一些操作.索引是随机选择的,因为我试图尽可能地保持CPU缓存,同时仍然获得准确的基准.循环的第一次迭代大约需要0.3秒,其他所有循环只需要0.2秒.我唯一的猜测是,cone []的部分仍然在缓存中,但我认为使用这个大小的数组它将无法存储太多.还有其他想法吗?
也许是JIT问题?
static void Main(string[] args)
{
Int64[] cone = new Int64[100000001];
for (int m = 0; m < 20; ++m)
{
int[] num2 = new int[10000001];
Random rand = new Random();
for (int i = 0; i < 10000000; ++i)
{
num2[i] = rand.Next(100000000);
}
DateTime start = DateTime.Now;
for (int i = 0; i < 10000000; ++i)
{
cone[num2[i]] = i;
if (cone[i] > 0) ++cone[i];
}
DateTime finish = DateTime.Now;
TimeSpan elapsed = finish - start; …Run Code Online (Sandbox Code Playgroud) 也许这是一个关于ab的问题,而不是关于龙卷风的问题,但有些事情没有意义.
我像这样运行基准测试:
$ ab -n 100 http://localdomainname/ # 2 tornados being 1 nginx
...
Concurrency Level: 1
Time taken for tests: 0.162 seconds
Complete requests: 100
Failed requests: 17
(Connect: 0, Receive: 0, Length: 17, Exceptions: 0)
Write errors: 0
Run Code Online (Sandbox Code Playgroud)
因此,根据100个请求中的17个失败.
在运行benchamark之前,我重置日志文件并再次查看它们:
$ wc -l /tmp/gkc.access.log
100 /tmp/gkc.access.log
$ cat /tmp/gkc.access.log | grep ' 200 ' | wc -l
100
Run Code Online (Sandbox Code Playgroud)
所以,据Nginx说,没有请求失败!为什么说ab中的17个失败了?
(顺便说一下,100个中只有17个只是一个例子.它上下起伏但从未出现过0,我期待)
UPDATE
在没有触及Tornado + Nginx设置的情况下使用httperf进行测试后,我得到了0个失败的请求.
我需要在我的iPhone应用程序中通过APNS使用通知.
但是当我阅读规范时,我看到可以在APNS端更改令牌,我必须更新提供者端的令牌才能接收通知.
但是,当Provider创建Notification并将其传递给APNS时会发生什么,并且此时令牌已经被更改?
我会收到旧令牌的通知吗?是否会通知提供商令牌已过期?
我是否应该这样解决,注册后我会更新我的提供商,并提供"你可以发送通知"信息并在应用程序运行时制作NSTimer作业以更新此状态吗?
根据这个:http: //developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW2
谢谢
我目前正在使用SQLite FTS4引擎,它的性能非常好.但有人知道MySQL的全文搜索(或任何其他SQL数据库)的任何基准/比较?
PS我不是在寻找任何Lucene/NoSQL替代品.
我决定使用C#和C++中的图像进行基准测试,以确定在我正在考虑为自己制作的项目中使用哪种语言.
我预计基准测试非常接近C++可能会略微推进.
C#代码每次运行大约需要300ms(我运行每次测试100次),其中C++代码大约需要1.5ms.
我的C#代码错了吗?我对它进行基准测试吗?或者它真的只是这么慢?
这是我使用的c#代码:
Stopwatch watch = new Stopwatch();
watch.Start();
Image image = Image.FromFile(imagePath);
watch.Stop();
Console.WriteLine("DEBUG: {0}", watch.ElapsedMilliseconds);
Run Code Online (Sandbox Code Playgroud)
C++代码几乎归结为:
QueryPerformanceCounter(&start);
Image * img = Image::FromFile(imagePath);
QueryPerformanceCounter(&stop);
delete img;
return (stop.QuadPart - start.QuadPart) * 1000.0 / freq.QuadPart;
Run Code Online (Sandbox Code Playgroud)
无论使用哪种语言,它们都需要以Image对象结束,因为它提供了我将需要的功能.
================================================== =====================
正如xanatos在评论中指出的那样,Image.FromFile会进行检查.
更具体地说,这个:
num = SafeNativeMethods.Gdip.GdipImageForceValidation(new HandleRef(null, zero));
if (num != 0)
{
SafeNativeMethods.Gdip.GdipDisposeImage(new HandleRef(null, zero));
throw SafeNativeMethods.Gdip.StatusException(num);
}
Run Code Online (Sandbox Code Playgroud)
使用Image.FromStream()代替,您可以避免这种情况.
我想知道的是,如果你避免这种情况并尝试加载无效的图像文件,它会抛出OutOfMemory异常.
在C++中,你不做这样的检查.那么检查有多重要?任何人都可以给我一个避免这种情况会很糟糕的情况吗?
我正在研究Project Euler,并想知道我是否可以使用PyPy来加速我的解决方案.但是,我发现结果非常令人失望,因为它需要更多时间来计算.
d:\projeuler>pypy problem204.py
3462.08630405 mseconds
d:\projeuler>python problem204.py
1823.91602542 mseconds
Run Code Online (Sandbox Code Playgroud)
由于mseconds输出是使用python的time模块计算的,所以我使用内置的基准测试命令再次运行它.
d:\projeuler>pypy -mtimeit -s "import problem204" "problem204._main()"
10 loops, best of 3: 465 msec per loop
d:\projeuler>python -mtimeit -s "import problem204" "problem204._main()"
10 loops, best of 3: 1.87 sec per loop
Run Code Online (Sandbox Code Playgroud)
PyPy报告称完成运行需要大约半秒钟.但是,我尝试了多次运行pypy problem204,输出甚至从未接近基准测试.5秒.与pypy不同,python的mtimeit结果与输出一致.pypy给了我不准确的基准,还是有些魔法我不明白?
可能,我只是错过了一个参数...但是,也许有人可以指出我:如何在R中运行分析并将结果存回某处?我知道R函数只能返回一个对象,但我可以在这里使用列表或粘贴基准测试结果并将分析存储在函数的返回值中.
但是,有没有办法评估基准(或system.time)和分析而不像这样运行两次?:
require(rbenchmark)
bmark <- function(x){
res <- list()
res[[1]] <- benchmark(x^6)
res[[2]] <- x^6
res
}
Run Code Online (Sandbox Code Playgroud)
编辑:对不起,我对我真正想做的事情感到困惑.也许用例更清楚:我没有一个典型的基准测试情况,我想检查我的自定义函数是否比其他函数更快.相反,我在不同的机器上使用不同的数据运行相同的东西.我不需要在测试环境中使用它,但是在生产中 - 我只想让脚本的用户知道花了多长时间.如果这是一个小时或更长的人可以计划他们的午休:).
我给自己写了一个A*,它运行得很好,现在是评估其性能的时候了(可能会针对其他解决方案来了解它的表现).
对于具有视觉反馈和乐趣的两者,我将其用作图像迷宫求解器.首先 - 我知道这不是A*主要设计的,但我认为测试它是一种非常好的方式(但不是唯一的方法).同意?我保持非常简单:白色像素是节点,其他颜色是墙壁.
我曾想过把这个迷宫(大图)扔到它,但我知道它会
总结一下:什么样的环境对A*来说是一个很好的压力测试?应用A*中的图表的数量级是多少(例如在游戏中)?
我有一个很难R做的计算,我可以选择2台计算机,叫做V和L,来运行代码.V应该比L快,但我没有遇到过这种情况.所以我决定测试一下.
作为一个简单的测试,我决定让他们倒转3000*3000的matrice 500次,然后记录时间.
set.seed(123)
I=500
n=3000
time=matrix(NA,ncol=3,nrow=I)
for(i in 1:I){
t0<-proc.time()
x<-solve(matrix(runif(n^2),n))
mt1<-proc.time()
time[i,]<-(mt1-t0)[1:3]
}
Run Code Online (Sandbox Code Playgroud)
问题是在特定的迭代期间,它被卡住了.我不知道为什么,但我怀疑是因为生成的矩阵接近奇异.所以我想改进代码.我可以想到三种方式:
R如果solve花费太长时间,请跳过该迭代?但同样,我该怎么做?benchmarking ×10
performance ×3
c# ×2
r ×2
.net ×1
a-star ×1
algorithm ×1
apachebench ×1
asp-classic ×1
asp.net ×1
c++ ×1
caching ×1
fts3 ×1
gdi+ ×1
ios ×1
mysql ×1
path-finding ×1
pypy ×1
python ×1
runtime ×1
sqlite ×1
tornado ×1