由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Java 多线程:还需要好CPU?
相关主题
怎么练习multi-threading,平常工作都是用Java框架Python 多线程或多进程如何搞
重新学习Java Thread的Field变量与Thread Localcomputer的历史就是不断地做出trade off. 每秒500万也一样。
Java 多线程 的架构如何改进?p-thread profiling
如果一个core,多线程还有必要吗?问个白痴问题
多线程有什么优化的方法?来来,讨论一下multithread, multi-core, affinity
多线程下的gdb core dump问题多线程编程前景如何?
怎样提高C#计算程序的performance?c++下如何实现多线程?
请教一个Node.js的疑惑用多线程怎么比单线程还慢呢?
相关话题的讨论汇总
话题: cpu话题: java话题: 多线程话题: 线程话题: 程序
进入Programming版参与讨论
1 (共1页)
c*****m
发帖数: 1160
1
故事很简单:一段程序本来跑10分钟;修改成多线程后(用runnable接口),在我的
lenovo yoga 710 上跑,只用一半时间。可以多次重复,排除缓存之类的可能。
同一段程序,在同事的 lenovo yoga 910 上跑,却完全没有加快的效果,总是10分钟。
按理说 910比710贵两三百块钱呢。
我们在线程里加入log,能看到多个线程之间都有穿插出现,而不是一个线程堵塞的状
态 。在两台电脑上都是如此。
最后查到,910上的CPU是 i7-7500U
# of Cores 2
# of Threads 4
710: i7-7700HQ
# of Cores 4
# of Threads 8
这是我们能找到的最可疑的区别了。
问题:难道在 2-core的CPU跑就没有多线程的好处?
附注:上面都是在 Eclipse 执行的java程序,用 java 8 最新版。eclipse里应该都是
默认的配置,程序也完全相同。
p***o
发帖数: 1252
2
7500U这种假i7就别折腾多线程了,找个8+核的机器跑跑再说吧。

钟。

【在 c*****m 的大作中提到】
: 故事很简单:一段程序本来跑10分钟;修改成多线程后(用runnable接口),在我的
: lenovo yoga 710 上跑,只用一半时间。可以多次重复,排除缓存之类的可能。
: 同一段程序,在同事的 lenovo yoga 910 上跑,却完全没有加快的效果,总是10分钟。
: 按理说 910比710贵两三百块钱呢。
: 我们在线程里加入log,能看到多个线程之间都有穿插出现,而不是一个线程堵塞的状
: 态 。在两台电脑上都是如此。
: 最后查到,910上的CPU是 i7-7500U
: # of Cores 2
: # of Threads 4
: 710: i7-7700HQ

w**z
发帖数: 8232
3
2 core, 不够用。还要干其他的。

钟。

【在 c*****m 的大作中提到】
: 故事很简单:一段程序本来跑10分钟;修改成多线程后(用runnable接口),在我的
: lenovo yoga 710 上跑,只用一半时间。可以多次重复,排除缓存之类的可能。
: 同一段程序,在同事的 lenovo yoga 910 上跑,却完全没有加快的效果,总是10分钟。
: 按理说 910比710贵两三百块钱呢。
: 我们在线程里加入log,能看到多个线程之间都有穿插出现,而不是一个线程堵塞的状
: 态 。在两台电脑上都是如此。
: 最后查到,910上的CPU是 i7-7500U
: # of Cores 2
: # of Threads 4
: 710: i7-7700HQ

c*****m
发帖数: 1160
4

够不够用,也应该能够在线程切换的时候,把一半时间换给另外的线程啊。这难道不是
标准的“操作系统”的例子?
为什么这个cpu是”假i7"? 业界上对这个cpu有什么特别的评价么?
用过8核的机器跑,程序是没有问题的,多线程能够节省时间。

【在 w**z 的大作中提到】
: 2 core, 不够用。还要干其他的。
:
: 钟。

c*********e
发帖数: 16335
5
加入log是个败笔。

钟。

【在 c*****m 的大作中提到】
: 故事很简单:一段程序本来跑10分钟;修改成多线程后(用runnable接口),在我的
: lenovo yoga 710 上跑,只用一半时间。可以多次重复,排除缓存之类的可能。
: 同一段程序,在同事的 lenovo yoga 910 上跑,却完全没有加快的效果,总是10分钟。
: 按理说 910比710贵两三百块钱呢。
: 我们在线程里加入log,能看到多个线程之间都有穿插出现,而不是一个线程堵塞的状
: 态 。在两台电脑上都是如此。
: 最后查到,910上的CPU是 i7-7500U
: # of Cores 2
: # of Threads 4
: 710: i7-7700HQ

w**z
发帖数: 8232
6
你的程序是CPU bound的话,两个core来回切换线程,overhead 太大。

【在 c*****m 的大作中提到】
:
: 够不够用,也应该能够在线程切换的时候,把一半时间换给另外的线程啊。这难道不是
: 标准的“操作系统”的例子?
: 为什么这个cpu是”假i7"? 业界上对这个cpu有什么特别的评价么?
: 用过8核的机器跑,程序是没有问题的,多线程能够节省时间。

h**********c
发帖数: 4120
7
这种profiling 比较业余,把java performance 这本书好好看。不过看了你老板也不
定当回事。
JAVA 8 可能改了很多东西。JAVA7 官方已经不支持了。明年就是9了。
c*****m
发帖数: 1160
8
这么久了,还没有一个有意义的回应啊。
N*****r
发帖数: 94
9
难以想象,你真是学过计算机系基础课程的?
7500U 只有两个核, 系统随便占用一个, 你的所谓多线程java就只能在一个cpu上来
回不停切换了
7700HQ四个核, 系统占用一个, 你还可以在剩下三个里每个玩个线程
明白了吗
至于 hyperthread, 那玩意并不是总能加速的, 还可能减速

钟。

【在 c*****m 的大作中提到】
: 故事很简单:一段程序本来跑10分钟;修改成多线程后(用runnable接口),在我的
: lenovo yoga 710 上跑,只用一半时间。可以多次重复,排除缓存之类的可能。
: 同一段程序,在同事的 lenovo yoga 910 上跑,却完全没有加快的效果,总是10分钟。
: 按理说 910比710贵两三百块钱呢。
: 我们在线程里加入log,能看到多个线程之间都有穿插出现,而不是一个线程堵塞的状
: 态 。在两台电脑上都是如此。
: 最后查到,910上的CPU是 i7-7500U
: # of Cores 2
: # of Threads 4
: 710: i7-7700HQ

c*****m
发帖数: 1160
10

系统占一个?能给一些具体的描述吗?如果系统占一个 CPU,那么10年前的单CPU电脑
就不能干活了。什么时候、什么情景改变成系统独占一个cpu?

【在 N*****r 的大作中提到】
: 难以想象,你真是学过计算机系基础课程的?
: 7500U 只有两个核, 系统随便占用一个, 你的所谓多线程java就只能在一个cpu上来
: 回不停切换了
: 7700HQ四个核, 系统占用一个, 你还可以在剩下三个里每个玩个线程
: 明白了吗
: 至于 hyperthread, 那玩意并不是总能加速的, 还可能减速
:
: 钟。

相关主题
多线程下的gdb core dump问题Python 多线程或多进程如何搞
怎样提高C#计算程序的performance?computer的历史就是不断地做出trade off. 每秒500万也一样。
请教一个Node.js的疑惑p-thread profiling
进入Programming版参与讨论
h**********c
发帖数: 4120
11
你跑个C 程序 比一下,比如这个
http://www.heteroclinic.net/Projects/hexagon.cpp
跟你说了,java performance 里讲了怎么 gauge performance,相当的章节在 讲操作
系统和一般通用的工具。你现在不看命令行怎么找JVM参数会不会?
不会的话,tbh,you have a long way to go at least regarding Java
c*****m
发帖数: 1160
12

我的问题你不回答,东扯西扯。 feel like wasting my time.

【在 h**********c 的大作中提到】
: 你跑个C 程序 比一下,比如这个
: http://www.heteroclinic.net/Projects/hexagon.cpp
: 跟你说了,java performance 里讲了怎么 gauge performance,相当的章节在 讲操作
: 系统和一般通用的工具。你现在不看命令行怎么找JVM参数会不会?
: 不会的话,tbh,you have a long way to go at least regarding Java

c*********e
发帖数: 16335
13
你的程序占用的那个主线程main thread,就是用的一个CPU。

【在 c*****m 的大作中提到】
:
: 我的问题你不回答,东扯西扯。 feel like wasting my time.

w***g
发帖数: 5958
14
楼上heteroclinic其实说得对。
不过7700HQ线程用足差不多就比7500U快一倍不到点的样子。

钟。

【在 c*****m 的大作中提到】
: 故事很简单:一段程序本来跑10分钟;修改成多线程后(用runnable接口),在我的
: lenovo yoga 710 上跑,只用一半时间。可以多次重复,排除缓存之类的可能。
: 同一段程序,在同事的 lenovo yoga 910 上跑,却完全没有加快的效果,总是10分钟。
: 按理说 910比710贵两三百块钱呢。
: 我们在线程里加入log,能看到多个线程之间都有穿插出现,而不是一个线程堵塞的状
: 态 。在两台电脑上都是如此。
: 最后查到,910上的CPU是 i7-7500U
: # of Cores 2
: # of Threads 4
: 710: i7-7700HQ

y*****g
发帖数: 5
15
你的workload是什么啊,修改成多线程后是怎么样分割workload的,线程之间需不需要
同步?——能不能大致描述一下,或者有没有代码,可以帮你诊断一下。
h**********c
发帖数: 4120
16
说话只言片语,你两个机器操作系统是什么,IDE版本,配得那个JDK,为什么不编译后
在操作系统下跑?
看样你技术写作也要提高。
Good luck, thanks for your time.
1 (共1页)
进入Programming版参与讨论
相关主题
用多线程怎么比单线程还慢呢?多线程有什么优化的方法?
写thread safe程序现在也是程序员必须要掌握的了吧多线程下的gdb core dump问题
Java的服务器一般运行几个线程比较合适?怎样提高C#计算程序的performance?
编程题又一道请教一个Node.js的疑惑
怎么练习multi-threading,平常工作都是用Java框架Python 多线程或多进程如何搞
重新学习Java Thread的Field变量与Thread Localcomputer的历史就是不断地做出trade off. 每秒500万也一样。
Java 多线程 的架构如何改进?p-thread profiling
如果一个core,多线程还有必要吗?问个白痴问题
相关话题的讨论汇总
话题: cpu话题: java话题: 多线程话题: 线程话题: 程序