关于效率的问题

wugui414 2013-11-27 11:25:02
2种情况:
服务器:4核
一个项目按不同的功能模块分成了20个进程,每个进程中有1条线程,这样效率高吗?程序无IO操作,无线程阻塞
一个项目按不同的功能模块分成了20个进程,每个进程中有4条线程,这样效率高吗?程序无IO操作,无线程阻塞


上面这种情况,哪个效率高? 帮忙从并发,线程切换,进程切换的角度分析一下,谢谢
...全文
216 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2013-11-27
  • 打赏
  • 举报
回复
进程和执行无关,进程的实现是依赖于其线程,当线程启动后,不管属于什么进程,大家的地位是相当的(不考虑优先级),即使是在无阻塞的情况,并不是线程越多越好,因为线程的调度需要不少的开销,第二种情况,同时运行80个线程,感觉很夸张,效率肯定高不了,第一种情况每进程一个线程,不知道你线程是做什么,如果既要处理ui又要处理处理计算,那也不是好的选择
wugui414 2013-11-27
  • 打赏
  • 举报
回复
引用 1 楼 lianshaohua 的回复:
效率不仅仅和这个有关系的,和代码质量、业务架构、类的实现等都有关系。 这样问很难回答的
不考虑你说的其他因素,因为你所说的其他因素,两种情况都是相同的
ztenv 版主 2013-11-27
  • 打赏
  • 举报
回复
效率不仅仅和这个有关系的,和代码质量、业务架构、类的实现等都有关系。 这样问很难回答的
赵4老师 2013-11-27
  • 打赏
  • 举报
回复
无profiler结果不谈效率。
wugui414 2013-11-27
  • 打赏
  • 举报
回复
引用 15 楼 nightkids_008 的回复:
效率基于测试结果而不是理论分析
先理论 拿着理论分析 去测验结果
nightkids_008 2013-11-27
  • 打赏
  • 举报
回复
效率基于测试结果而不是理论分析
wugui414 2013-11-27
  • 打赏
  • 举报
回复
引用 11 楼 nice_cxf 的回复:
20个进程之间互相独立,不需要通讯? 没看出你所谓的效率高是相对什么来说的 如果所有进程之间需要靠通讯来交换数据,显然20个进程太多了
可能我阐述的不是很清楚,我不太想知道结果,而是想知道 从进程切换,线程切换的角度怎样来理解
nice_cxf 2013-11-27
  • 打赏
  • 举报
回复
引用 12 楼 wugui414 的回复:
[quote=引用 11 楼 nice_cxf 的回复:] 20个进程之间互相独立,不需要通讯? 没看出你所谓的效率高是相对什么来说的 如果所有进程之间需要靠通讯来交换数据,显然20个进程太多了
不需要关注进程间是否需要交换数据 20个进程是在说 同时有这么多的进程在运行 在这么多进程运行的情况下 进程内使用1个线程好,还是使用4个线程好[/quote] 这样的话,自然用4个线程好,效率会提高,但是cpu占有率应该也会变多
wugui414 2013-11-27
  • 打赏
  • 举报
回复
引用 11 楼 nice_cxf 的回复:
20个进程之间互相独立,不需要通讯? 没看出你所谓的效率高是相对什么来说的 如果所有进程之间需要靠通讯来交换数据,显然20个进程太多了
不需要关注进程间是否需要交换数据 20个进程是在说 同时有这么多的进程在运行 在这么多进程运行的情况下 进程内使用1个线程好,还是使用4个线程好
nice_cxf 2013-11-27
  • 打赏
  • 举报
回复
20个进程之间互相独立,不需要通讯? 没看出你所谓的效率高是相对什么来说的 如果所有进程之间需要靠通讯来交换数据,显然20个进程太多了
wugui414 2013-11-27
  • 打赏
  • 举报
回复
引用 6 楼 cheng7068 的回复:
几个核并不是说一个进程里开几个线程就效率最高了,但是采用能采用多线程设计时尽量避免多进程实现,线程效率要比进程效率高很多
能帮忙从进程切换,线程切换效率上解释一下吗?
wugui414 2013-11-27
  • 打赏
  • 举报
回复
引用 7 楼 derekrose 的回复:
举例子要举的简介易懂,在你这个情况20这个数字毫无意义 属于控制变量中的不变因素
20有意义,我们现在项目开了27个进程
majia2011 2013-11-27
  • 打赏
  • 举报
回复
第2种吧,至少每个功能,都有机会优化下 20个进程,有点坑,呵呵呵
derekrose 2013-11-27
  • 打赏
  • 举报
回复
举例子要举的简介易懂,在你这个情况20这个数字毫无意义 属于控制变量中的不变因素
风行踩火轮 2013-11-27
  • 打赏
  • 举报
回复
几个核并不是说一个进程里开几个线程就效率最高了,但是采用能采用多线程设计时尽量避免多进程实现,线程效率要比进程效率高很多
wugui414 2013-11-27
  • 打赏
  • 举报
回复
wugui414 2013-11-27
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
进程和执行无关,进程的实现是依赖于其线程,当线程启动后,不管属于什么进程,大家的地位是相当的(不考虑优先级),即使是在无阻塞的情况,并不是线程越多越好,因为线程的调度需要不少的开销,第二种情况,同时运行80个线程,感觉很夸张,效率肯定高不了,第一种情况每进程一个线程,不知道你线程是做什么,如果既要处理ui又要处理处理计算,那也不是好的选择
2种情况线程都是处理逻辑,无其他用处,第二种情况只开4条线程,服务器是4核的

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧