我有一个应用程序需要一堆数据,并在非常耗时的一系列周期中对其进行处理。完成的结果应该可以通过HTTP API访问。我决定创建一个执行处理的核心库,以及一个在新线程上启动进程的ASP.NET应用程序。核心库产生4个线程,它们处理来自队列的对象。ASP.NET比控制台应用程序慢
但是,这显然比在简单的控制台应用程序中运行处理要慢很多。在我的控制台应用程序中,每个循环处理大约需要13-20秒,平均时间约为17秒,在我的ASP.NET应用程序中,处理需要13-350(是三百五十)秒,平均时间约为45秒。每个循环的时间在我的ASP.NET应用程序中变化很大。
使用我错过的ASP.NET框架有没有明显的性能下降?我已经禁用了回收,并且在处理时几乎没有请求被提供,如果有的话。这是否与线程或垃圾收集有关?我怀疑后者,因为大多数循环运行速度不够快,而有些速度非常慢,这会破坏我的总处理时间。
我是否应该离开ASP.NET并尝试在我的控制台应用程序中实现HTTP侦听器,或者将其重新编译为Windows服务?有任何想法吗?
控制台应用程序运行32位,您的Web应用程序在64位。如果您使用了大量资源,则Web应用程序需要更多内存,然后使用您的控制台应用程序。尝试在32位运行你的网络应用程序。顺便说一句,没有一些代码,我们只能猜测问题... – Peter
@peer:如果我运行一个控制台应用程序,它运行在64位,如果我启动一个Web应用程序(在Visual Studio内部Web服务器)它运行在32位。无论如何,你有一点可能会影响性能,但编译特定目标的控制台应用程序比将IIS更改为32位要容易得多。 – Guffa