关于流程绩效的面试问题

时间:2011-03-29 10:25:32

标签: c++ performance unix

我在最近的一次采访中遇到过这个问题。

假设我们有一个进程,它可以运行多个实例。 在进行了一些讨论后,我们决定在环境中运行的过程不超过5个。如果给我这样的过程,我需要检查所有可能性以提高过程的性能。

我回答说我们需要检查过程中是否有任何不必要的验证,并尝试在代码中避免它们。还说资源应该足够。 然后他回答说,如果有丰富的资源......那么?

BTW,我们假设该过程是用c ++开发的。

您能否建议我们考虑提高绩效的方式?

编辑:按照jons的回答, 我问了同样的问题。我的答案是: 1)其电信计费过程,从网络处理EDR。 2)大部分时间应该处理EDR。我们每天24小时拨打电话。 3)他简单地说5我想,只是他只想要五个实例。

在此编辑之后,我可以有更好的答案吗?

6 个答案:

答案 0 :(得分:4)

如果没有更多信息,就无法对这个问题给出有意义的答案。例如:

  • 这个过程的目的是什么?
  • 该过程在大部分运行时间内的作用是什么?它是I / O绑定的吗?是CPU绑定的吗?它通常会睡觉吗?偶尔会醒来吗?
  • 最多5个限制的性质是什么?该流程是否在内部强制执行?它是由资源考虑因素强加的吗?

答案 1 :(得分:0)

我怀疑他们正在寻找关于在进程之间共享内存/代码的答案。

例如,代码的很大一部分可以放在DLL(或共享库)中,这将在进程之间共享 - 减少使用的总内存。

这也可用于协调对共享资源的访问,共享大堆分配(如缓冲区或内存池)等。

答案 2 :(得分:0)

首先,您应该检查您的进程使用的资源:文件,注册表项,全局(命名)同步对象等。这些实例之间共享的任何内容都会降低性能。
第二......一个很大的依赖......可以是任何特定于该过程的东西

答案 3 :(得分:0)

如果进程的实例运行在相同(共享)资源上,那么最好减少它们之间的耦合。

答案 4 :(得分:0)

这个问题有很多不同的答案。
答案取决于流程的作用或功能要求?

根据要求,可以应用不同的优化。

如果是简单的聊天服务器,那么我们必须应用不同的优化 如果它是简单的文件服务器,那么我们必须应用不同的优化,并且根据功能要求可以适用不同的优化

但是,一般来说,内存优化,漏洞检测,CPU优化,线程优化,循环检测,函数优化都可以应用于一般的所有程序。

如果它的服务器或客户端取决于我们可能必须应用不同的优化。与客户端不同,假设服务器运行数月而不关闭。

答案 5 :(得分:0)

如果不了解应用程序,我们只能提供用于检查C ++的通用点:

  • 避免使用不必要的物品副本

  • 检查算法是否无效且有更简单的方法

  • 首先放置频繁的案例标签

  • 最小化局部变量并在最大范围内声明它们

  • 在可能的情况下更喜欢初始化而不是分配

  • ...