【发布时间】:2023-03-16 14:04:01
【问题描述】:
我需要一些建议。我有一个应用程序可以处理来自证券交易所的实时数据馈送的交易信息。我的处理落后了。
由于我运行在具有 32 GB 主内存的 3GHz Intel I7 上,我应该有足够的能力来执行此应用程序。 Parse 例程将交易信息存储在 SQL Server 2014 数据库中,该数据库在 Windows 2012 R2 服务器上运行。
我在主处理循环中放了如下时序信息:
invokeTime.Restart();
Parallel.Invoke(() => parserObj.Parse(julian, data));
invokeTime.Stop();
var milliseconds = invokeTime.ElapsedMilliseconds;
if (milliseconds > maxMilliseconds) {
maxMilliseconds = milliseconds;
messageBar.SetText("Invoke: " + milliseconds);
}
我用了 1122 毫秒来执行 Parallel.Invoke。类似的计时测试表明 Parse 例程只需要 7 毫秒(最大值)。
除了执行 Parallel.Invoke 之外,还有更好的数据处理方式吗?
任何建议将不胜感激。
查尔斯
【问题讨论】:
-
你为什么打电话给
Parallel.Invoke,只有一个代表? -
这可能对你有用:stackoverflow.com/q/10802333/2638872 看起来其他人也想知道同样的事情。
-
信息不足,只能猜测。这些线程中有多少是同时运行的?如果没有等待的线程,操作系统需要时间来启动一个新的池线程。您可以查看ThreadPool.SetMinThreads。此外,如果您运行的线程过多,一切都会变慢。
-
发布的代码没有并行执行任何操作。使用 Task.Start() 或 Threadpool.QueueUserWorkitem()。
-
Reed Copsey 应该是codeproject.com/Articles/634146/…
标签: c# multithreading c#-4.0