gpt4 book ai didi

task-parallel-library - I/O 性能 - 异步 vs TPL vs Dataflow vs RX

转载 作者:行者123 更新时间:2023-12-03 13:02:39 25 4
gpt4 key购买 nike

我有一段 C# 5.0 代码可以生成大量的网络和磁盘 I/O。我需要并行运行此代码的多个副本。以下哪项技术可能会给我带来最佳性能:

  • 带有等待的异步方法
  • 直接使用 TPL 中的任务
  • TPL 数据流 nuget
  • 响应式(Reactive)扩展

  • 我不太擅长这种并行的东西,但是如果使用较低的杠杆,比如 Thread,可以给我更好的性能,我也会考虑这一点。

    最佳答案

    这就像试图通过询问最快的方法来解开安全带来优化跨大西洋飞行的长度。

    好的,一些真正的建议,因为我有点像个 SCSS

    让我们给出一个有用的答案。把性能想象成事件的“类”——每一个都慢一个数量级(至少!):

  • 只访问 CPU,很少使用内存(即将非常简单的图形渲染到非常快的 GPU,或者计算 Pi 的位数)
  • 只访问 CPU 和内存中的东西,磁盘上什么都没有(即一个写得很好的游戏)
  • 访问磁盘
  • 访问网络。

  • 如果你这样做 甚至一个在事件#3 中,对事件#1 和#2 进行典型的优化(例如优化线程库)毫无意义——它们完全被磁盘命中所掩盖。 CPU 技巧也是如此——如果你经常发生 L2/L3 缓存未命中,那么通过手写汇编节省几个 CPU 周期是不值得的(这就是为什么像 loop unrolling 这样的事情现在通常是个坏主意)。

    那么,我们可以从中得到什么?有两种方法可以让你的程序更快,要么从 #3 提升到 #2(这通常是不可能的,这取决于你在做什么),或者减少 I/O。 I/O 和网络速度是大多数现代应用程序中的速率限制因素,而这正是您应该尝试优化的。

    关于task-parallel-library - I/O 性能 - 异步 vs TPL vs Dataflow vs RX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049718/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com