我在最近的一次采访中遇到过这个问题。
假设我们有一个进程,它可以运行多个实例。 在进行了一些讨论后,我们决定在环境中运行的过程不超过5个。如果给我这样的过程,我需要检查所有可能性以提高过程的性能。
我回答说我们需要检查过程中是否有任何不必要的验证,并尝试在代码中避免它们。还说资源应该足够。 然后他回答说,如果有丰富的资源......那么?
BTW,我们假设该过程是用c ++开发的。
您能否建议我们考虑提高绩效的方式?
编辑:按照jons的回答, 我问了同样的问题。我的答案是: 1)其电信计费过程,从网络处理EDR。 2)大部分时间应该处理EDR。我们每天24小时拨打电话。 3)他简单地说5我想,只是他只想要五个实例。
在此编辑之后,我可以有更好的答案吗?
答案 0 :(得分:4)
如果没有更多信息,就无法对这个问题给出有意义的答案。例如:
答案 1 :(得分:0)
我怀疑他们正在寻找关于在进程之间共享内存/代码的答案。
例如,代码的很大一部分可以放在DLL(或共享库)中,这将在进程之间共享 - 减少使用的总内存。
这也可用于协调对共享资源的访问,共享大堆分配(如缓冲区或内存池)等。
答案 2 :(得分:0)
首先,您应该检查您的进程使用的资源:文件,注册表项,全局(命名)同步对象等。这些实例之间共享的任何内容都会降低性能。
第二......一个很大的依赖......可以是任何特定于该过程的东西
答案 3 :(得分:0)
如果进程的实例运行在相同(共享)资源上,那么最好减少它们之间的耦合。
答案 4 :(得分:0)
这个问题有很多不同的答案。
答案取决于流程的作用或功能要求?
根据要求,可以应用不同的优化。
如果是简单的聊天服务器,那么我们必须应用不同的优化 如果它是简单的文件服务器,那么我们必须应用不同的优化,并且根据功能要求可以适用不同的优化
但是,一般来说,内存优化,漏洞检测,CPU优化,线程优化,循环检测,函数优化都可以应用于一般的所有程序。
如果它的服务器或客户端取决于我们可能必须应用不同的优化。与客户端不同,假设服务器运行数月而不关闭。
答案 5 :(得分:0)
如果不了解应用程序,我们只能提供用于检查C ++的通用点:
避免使用不必要的物品副本
检查算法是否无效且有更简单的方法
首先放置频繁的案例标签
最小化局部变量并在最大范围内声明它们
在可能的情况下更喜欢初始化而不是分配
...