我是在本地测试 测试代码是做了一个根据用户登陆查询的功能。
使用我自己写的一个hosting承载了一个服务 地址:http://127.0.0.1:83/Client/Login
又使用WCF主机服务承载了一个相同的服务 地址:http://127.0.0.1:82/Client/Login
写了一个控制台应用程序用来测试
public static void DoWork()
{
using (WebClient webClient = new WebClient())
{
while (Run)
{
try
{
DateTime olderTime = DateTime.Now;
webClient.Headers.Add("Content-Type", "application/json");
webClient.Encoding = Encoding.UTF8;
string PostData = "{\"Password\":\"" + rd.Next(99999999) + "\",\"UserName\":\"" + rd.Next(99999999) + "\",\"isRember\":true}";
string result = webClient.UploadString("http://127.0.0.1:82/Client/Login", PostData);
totalNum++;
DateTime newTime = DateTime.Now;
TimeSpan ts = newTime - olderTime;
totalMilliseconds += ts.TotalMilliseconds;
Console.WriteLine(string.Format("线程{0}耗时{1} 平均耗时{2} 次数:{3} 结果:", Thread.CurrentThread.GetHashCode(), ts.TotalMilliseconds, totalMilliseconds / totalNum, totalNum));
Console.WriteLine(result);
}
catch
{
}
}
}
}
我自己的测试图
WCF主机服务的测试图
可以看到效率差了 5倍左右 有的时候能差10倍。
用的是多线程处理,其中Message消息中是数据库查询耗时,线程耗时是总耗时。
想知道这是为什么?
原因是在调试模式下。。。。
每个主机服务器处理的数据本来就是不同的,就像单页面php应该比java快一样
原因找到了,是因为我是在调试模式下运行的服务,直接打开生成的软件速度就上来了。
@Songlw: 原来如此。呵呵=
@angelshelter: 很奇特。明显看到查询数据库速度也慢了。服务是通过dll调用的,不知道这个原理是什么
用Thrift
用二进制传办输
因为要跟网页通信所以要用这种服务