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 | |
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, 那玩意并不是总能加速的, 还可能减速 : : 钟。
|
|
|
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. |