networking - 网络中的性能因素

标签 networking performance unmanaged managed

有时我只是在兜圈子,想知道是否添加一个线程队列,单线程查询和更新数据库服务器,以工作线程处理用户请求为代价是否有效地使用资源,以及它如何影响应用程序在 number of replies/sec 方面的整体性能?

然而,由于我只是一个没有真正商业项目的业余爱好者,我通常会因为想太多而最终放弃。我进行了研究,但没有找到相关答案。

那么,在托管和非托管环境中编写高性能 I/O(特别是网络)应用程序时,还应考虑哪些其他因素?

最佳答案

操作系统概念是适合您研究的领域之一。许多计算机科学学位都开设了这方面的类(class)。

听起来您的机器上有一个假设的应用程序正在请求数据库,您有兴趣对这个假设的应用程序进行线程处理是否会提高其性能。

作为一名性能测试员,我可以告诉您系统性能完全取决于权衡和优先级。即,您是希望 UI super 响应,还是希望使用绝对最少的系统资源?

在这种情况下你很幸运,你想要平衡的资源没有相互争用。事物的数据库端就是我们所说的 I/O,事物的线程端是 CPU。应用程序往往是 I/O 绑定(bind)或 CPU 绑定(bind),少数两者都是。在 I/O 绑定(bind)应用程序中,切换到更快的 CPU 不会加快速度,反之亦然。

如果您添加额外的线程,当且仅当您的网络有时间进行额外的网络 IO 时,这才会有所帮助。添加额外的线程不会以无法处理的方式增加 CPU 上的负载,因为将向数据库发出请求并且线程会阻塞。一旦请求返回到您的机器,将抛出一个中断,您的线程将从等待队列中拉出。

真正的问题是:您想对数据库多好?

关于networking - 网络中的性能因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4720785/

相关文章:

python - Pandas 数据框 : loc vs query performance

c# - 如何在非托管 C++ dll 中查找调用方程序集名称

c# - 统一处理非托管 API 中的错误代码

c - ZeroMQ 的网络诊断示例

optimization - 让本地主机更快?

networking - Amazon S3 的奇怪 TCP 问题

C++11 智能指针总是代替新建/删除?

c# - 是否可以从 IntPtr + 大小创建托管字节数组?

c++ - C++ 3D 游戏的网络基础知识是什么?

java - 为 RTS 游戏实现多人游戏