我有一个应用程序需要一堆数据并在一系列非常耗时的循环中处理它。完成的结果应该可以通过HTTP API访问。我决定创建一个执行处理的核心库,以及一个在新线程上启动进程的ASP.NET应用程序。核心库产生4个线程,用于处理队列中的对象。
然而,事实证明这比在简单的控制台应用程序中运行处理要慢得多。在我的控制台应用程序中,每个循环处理大约需要13-20秒,平均大约17秒,在我的ASP.NET应用程序中,处理需要13-350(是三百五十)秒,平均大约45秒。每个循环的时间在我的ASP.NET应用程序中变化很大。
使用我错过的ASP.NET框架是否有明显的性能损失?我已经禁用了回收,并且在处理过程中提供的请求很少(如果有的话)。这与线程或垃圾回收有关吗?我怀疑后者,因为大多数循环运行得足够快,而有些循环非常慢,这会破坏我的总处理时间。
我是否应该离开ASP.NET并尝试在我的控制台应用程序中实现HTTP侦听器,或者将其重新构建为Windows服务?有什么想法吗?
答案 0 :(得分:3)
ASP.NET应用程序显然总是比Console应用程序执行速度慢。
原因:
HTTP协议的开销。
ASP.NET Framework DLL的大量内存使用
由ASP.NET本身控制的有限线程。
您可以使用将由您的应用程序调用的WCF服务进行构建。