新足迹

 找回密码
 注册

精华好帖回顾

· 吃在澳洲,记录我每天的菜谱 (2008-10-17) kittywyh · 读书之在路上 那年夏天,与姜喜宝的不期而遇 (2012-7-29) 明河素月
· The Toy Story 玩具总动员 - 玩Zany Ball 视频 87# (2011-6-24) peanut · 也许,你会懂的。。 (坑已填完) (2010-7-6) 月亮
Advertisement
Advertisement
楼主:zn7726

我一定是渣, 虚心向程序员帝们请教, 开发中如果避免使用debugger -- 请KA娃和yuba务必发言 [复制链接]

2010年度奖章获得者

发表于 2010-10-19 15:38 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-10-19 16:33 发表


在.net的概念里multi threading不会用multi core的,因为他们share同一个heap(在同一个cpu中),只不过不同的stack.

.net 4.0可以用多cpu,但不是multi threading的范畴了。

java可能和.net在这个问题上实现不同。 ...


yea, multi-thread 是single cpu, running on different process

parallel 是用multi-core cpu. .net 4 裡才有。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2010-10-19 15:45 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不会吧,.net4.0以前的程序难道在我的4芯8核I7上跑只能有12.5%左右的Cpu占用率?

2010年度奖章获得者

发表于 2010-10-19 15:50 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不清楚cpu原理。 可能一個core 會去“借” 其他core把, 但算在一個進程裡?

发表于 2010-10-19 15:55 |显示全部楼层

回复 52# 的帖子

此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
多线程和多核完全是两回事,以前单核CPU一样跑多线程的程序,起码windows95就是多线程了。
多核如何协同工作,看看intel和AMD的产品介绍就知道了。

发表于 2010-10-19 15:59 |显示全部楼层
此文章由 realfenglin 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 realfenglin 所有!转贴必须注明作者、出处和本声明,并保持内容完整
LZ都不来了,散了散了,回家吃饭了。

发表于 2010-10-19 16:01 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-19 16:38 发表


yea, multi-thread 是single cpu, running on different process

parallel 是用multi-core cpu. .net 4 裡才有。


multi threads run under single process.
Advertisement
Advertisement

发表于 2010-10-19 16:04 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 16:45 发表
不会吧,.net4.0以前的程序难道在我的4芯8核I7上跑只能有12.5%左右的Cpu占用率?


听起来crazy,但这是事实,这就是为什么很多人在推崇functional programming,其中一个亮点就是可以利用现在的multi core.

2010年度奖章获得者

发表于 2010-10-19 16:06 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
yes your right

one process has many thread

so they running on different thread but in same process.

2010年度奖章获得者

发表于 2010-10-19 16:08 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
cause the whole application is running on one process

退役斑竹

发表于 2010-10-19 16:10 |显示全部楼层
此文章由 大饼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 大饼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 16:45 发表
不会吧,.net4.0以前的程序难道在我的4芯8核I7上跑只能有12.5%左右的Cpu占用率?

问大佬们一个无关的问题。
怎么才能提高eclipse的编译速度?
看着windows task manager里面java.exe 50%的cpu占用率,牙根痒。

2010年度奖章获得者

发表于 2010-10-19 16:12 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 大饼 于 2010-10-19 17:10 发表

问大佬们一个无关的问题。
怎么才能提高eclipse的编译速度?
看着windows task manager里面java.exe 50%的cpu占用率,牙根痒。


use MAC
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2010-10-19 16:12 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我理解的是一般一个Core产生一个Native thread,运行时和Java thread匹配,如果Java thread多于Native thread的话,Native thread做context switch,也叫Time slicing。

一个java thread自带一个stack。如果只有一个java thread的话,是无论如何用不了multi core的。所以必须要写多线程程序。J2ee application(包括web) 一般不用写,但是J2se程序得写。

JVM里的heap主要是存储,所以跟CPU没多大关系。

Net是微软自己的产品,对操作系统有更深刻的理解,所以应该是有自己的方式。

Net不知道.

2010年度奖章获得者

发表于 2010-10-19 16:13 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Multi-Processor parallel

operating systems can schedule different threads within a process to be executed on different physical processors,

退役斑竹

发表于 2010-10-19 16:24 |显示全部楼层
此文章由 大饼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 大饼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-19 17:12 发表
use MAC

俺的eclipse只能用在windows上

发表于 2010-10-19 16:33 |显示全部楼层
此文章由 zn7726 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zn7726 所有!转贴必须注明作者、出处和本声明,并保持内容完整
俺的eclipse只能用在windows上

参考下Ka娃的新电脑配置单

发表于 2010-10-19 17:31 |显示全部楼层
此文章由 yuba 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yuba 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 大饼 于 2010-10-19 17:10 发表
怎么才能提高eclipse的编译速度?
看着windows task manager里面java.exe 50%的cpu占用率,牙根痒。


不都是即写即编吗

Eclipse启动后建立项目index的动作,在Linux下比Windows下快很多,我觉得是文件系统的差异造成的
Advertisement
Advertisement

发表于 2010-10-19 17:53 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 大饼 于 2010-10-19 17:10 发表

问大佬们一个无关的问题。
怎么才能提高eclipse的编译速度?
看着windows task manager里面java.exe 50%的cpu占用率,牙根痒。

你build的东西太多了。

发表于 2010-10-19 18:06 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-10-19 16:55 发表
多线程和多核完全是两回事,以前单核CPU一样跑多线程的程序,起码windows95就是多线程了。
多核如何协同工作,看看intel和AMD的产品介绍就知道了。

不会吧。你也是net programmer 么?

在Java里,一个线程只能某一时刻只能分配在一个Cpu core上,并发线程多了,自然就能利用更多的core了。并不需要看硬件说明。

Multithreading: Advantages/Uses

Multithreading as a widespread programming and execution model allows multiple threads to exist within the context of a single process. These threads share the process' resources but are able to execute independently. The threaded programming model provides developers with a useful abstraction of concurrent execution. However, perhaps the most interesting application of the technology is when it is applied to a single process to enable parallel execution on a multiprocessor system.

This advantage of a multithreaded program allows it to operate faster on computer systems that have multiple CPUs, CPUs with multiple cores, or across a cluster of machines — because the threads of the program naturally lend themselves to truly concurrent execution. In such a case, the programmer needs to be careful to avoid race conditions, and other non-intuitive behaviors. In order for data to be correctly manipulated, threads will often need to rendezvous in time in order to process the data in the correct order. Threads may also require mutually-exclusive operations (often implemented using semaphores) in order to prevent common data from being simultaneously modified, or read while in the process of being modified. Careless use of such primitives can lead to deadlocks.

Another advantage of multithreading, even for single-CPU systems, is the ability for an application to remain responsive to input. In a single threaded program, if the main execution thread blocks on a long running task, the entire application can appear to freeze. By moving such long running tasks to a worker thread that runs concurrently with the main execution thread, it is possible for the application to remain responsive to user input while executing tasks in the background.

http://en.wikipedia.org/wiki/Thr ... :_Advantages.2FUses

发表于 2010-10-19 18:08 |显示全部楼层
此文章由 winsome 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 winsome 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 16:16 发表

没有那么难吧。概念清楚就可以。程序不是多线程的话,不能充分发挥现代CPU的性能。

我有一段时间加工一个batch程序,横跨整个产品的,把它变成多线程,好利用多核CPU。最后下来速度提高了1.5倍。

最难的一个线程安全错误, ...


多线程和多进程的选择更多时候是基于business的需要,multi-threading肯定会增加一些tricky bug 的 risk

所以如果可以从设计上避免multi-threading而又能达到性能要求就最好

发表于 2010-10-19 18:17 |显示全部楼层

回复 79# 的帖子

此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你取的这段话有哪点说明了多线程和多核有必然关系?还没有多核的时候,早就有大量的应用是基于多线程的,你这个真不知道?

发表于 2010-10-19 18:18 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 winsome 于 2010-10-19 19:08 发表


多线程和多进程的选择更多时候是基于business的需要,multi-threading肯定会增加一些tricky bug 的 risk

所以如果可以从设计上避免multi-threading而又能达到性能要求就最好 ...

避免很难,把架构改成J2ee的,利用MDB来实现异步,让应用服务器来帮你实现多线程是一种思路。

不过编程要是都很简单,也就没意思了,真成了会Spring,Hibernate就可以走遍天下了。Java multi-treading很难,不过有些行业,是必须的,像自动交易系统。
Advertisement
Advertisement

发表于 2010-10-19 18:24 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-10-19 19:17 发表
你取的这段话有哪点说明了多线程和多核有必然关系?还没有多核的时候,早就有大量的应用是基于多线程的,你这个真不知道?

你怎么就不明白呢?

多线程编程当然早就有,现在处理器不从主频上升了,转成多核,对于一些语言,至少Java,只有通过多线程编程才能利用多核,或者服务器替你做。

多线程不是为多核而生的,但是多核离开多线程编程利用不好。

现在编程的架构是一层一层的,那些Intel和AMD的说明书不是给你看得,是给MS和Oracle的系统工程师看的

发表于 2010-10-19 18:24 |显示全部楼层
此文章由 winsome 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 winsome 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-10-19 19:17 发表
你取的这段话有哪点说明了多线程和多核有必然关系?还没有多核的时候,早就有大量的应用是基于多线程的,你这个真不知道?



???

我说的是在设计的时候除非性能瓶颈,否则尽量不要选择多线程

发表于 2010-10-19 18:27 |显示全部楼层
此文章由 winsome 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 winsome 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 19:18 发表

避免很难,把架构改成J2ee的,利用MDB来实现异步,让应用服务器来帮你实现多线程是一种思路。

不过编程要是都很简单,也就没意思了,真成了会Spring,Hibernate就可以走遍天下了。Java multi-treading很难,不过有些行业,是必须 ...


我做C++,我们采用的方式是用server farm,前端distribute traffic,后端都是单线程在跑,有时候多进程

我想有些东西可以用硬件来弥补吧,现在硬件多便宜?

发表于 2010-10-19 18:31 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 winsome 于 2010-10-19 19:27 发表


我做C++,我们采用的方式是用server farm,前端distribute traffic,后端都是单线程在跑,有时候多进程

我想有些东西可以用硬件来弥补吧,现在硬件多便宜? ...

但是浪费了CPU资源多不好

发表于 2010-10-19 18:32 |显示全部楼层

回复 82# 的帖子

此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我的意思是多线程和多核没啥必然联系,比如群发邮件,即使是单CPU,多线程也能比但线程更好利用CPU。
Advertisement
Advertisement

发表于 2010-10-19 18:37 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2010-10-19 19:32 发表
我的意思是多线程和多核没啥必然联系,比如群发邮件,即使是单CPU,多线程也能比但线程更好利用CPU。

你说得有道理,但是如果是多CPU,单线程就悲剧了,当然不计较速度和效率无所谓,现在大部分服务器是多核的。

退役斑竹

发表于 2010-10-19 18:40 |显示全部楼层
此文章由 大饼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 大饼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 18:53 发表

你build的东西太多了。

请你们这些java,eclipse大牛提供个解决方案吧
我编译的东西的确很多,一个小项目就要2分钟多。编译个uclinux,我可以去喝杯茶了

发表于 2010-10-19 18:42 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 大饼 于 2010-10-19 19:40 发表

请你们这些java,eclipse大牛提供个解决方案吧
我编译的东西的确很多,一个小项目就要2分钟多。编译个uclinux,我可以去喝杯茶了

你的小项目一共有多少class?一定要把他们放在一起么?分分package,从设计上来说也好一些,cohension么

退役斑竹

发表于 2010-10-19 18:49 |显示全部楼层
此文章由 大饼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 大饼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 19:42 发表

你的小项目一共有多少class?一定要把他们放在一起么?分分package,从设计上来说也好一些,cohension么

木有class。
不是java,纯C。
一坨一坨的驱动,动不动就几十个c文件。
原来的IDE都是c++写的,现在全都改成eclipse了

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部