zw_7627 发表于 2019-7-14 16:45:30

C#中的线程运行比C++中慢,是什么原因?

C#移植了C++的boot 下载线程,可以下载成功,但是C#确需要10分钟,而C++只要10秒,是什么原因?

liuqian 发表于 2019-7-14 16:57:02

c#比c++慢是正常的,但你这个差了600倍就不正常了

zw_7627 发表于 2019-7-14 17:49:32

liuqian 发表于 2019-7-14 16:57
c#比c++慢是正常的,但你这个差了600倍就不正常了

都是线程,C++里面的线程比C#里面的线程还要多。为什么会慢?有没有思路可查?

rifjft 发表于 2019-7-14 17:51:43

{:sweat:}10分钟与10秒的差异,这数据太吓人了

NJ8888 发表于 2019-7-14 19:50:24

要加文件时间戳日志分析了

gongxd 发表于 2019-7-14 21:46:37

这种差异肯定是编程的问题
语言上没有这么大差别

wudicgi 发表于 2019-7-14 21:48:53

性能问题先用 Visual Studio 的性能探查器大概看一眼,看看哪里耗时多

zxq6 发表于 2019-7-14 21:55:38

c#效率比c++差是肯定的。但是好像没那么严重吧。

codefish 发表于 2019-7-14 22:02:17

贴代码出来,看一下

zyqcome 发表于 2019-7-14 22:34:38

c#并不是效率差,而是启动的时候体验差,它是中间码运行

关于以后 发表于 2019-7-14 22:35:01

语言有差别,再怎么有差别,都不会差60倍吧。。。
是不是移植的时候,什么地方没注意。

zw_7627 发表于 2019-7-15 00:03:53

codefish 发表于 2019-7-14 22:02
贴代码出来,看一下

公司代码不方便全部贴出,讲下我的思路吧。
接收线程中,判断接收下位机是否有应答
{
        if(有应答信号)
        {
                event.set();
        }
}

下载线程中
{
        逐行发送数据;
        if(event.WaitOne())
        {
                发送下一行数据;
        }
       
}

zw_7627 发表于 2019-7-15 00:05:00

关于以后 发表于 2019-7-14 22:35
语言有差别,再怎么有差别,都不会差60倍吧。。。
是不是移植的时候,什么地方没注意。 ...

我也担心是这个原因。。。

zw_7627 发表于 2020-8-9 16:56:32

wudicgi 发表于 2019-7-14 21:48
性能问题先用 Visual Studio 的性能探查器大概看一眼,看看哪里耗时多

现在C#下载时间做到2分钟多了,但是与C++的20秒相比,还是比较难以接受。相比较C++运行起来,CPU占有率100%,C#只有10%。

youkebing 发表于 2020-8-9 18:23:56

这个问题1年还在搞,很佩服,但把问题描述清楚,寻求网友支持,可能就一天!

redroof 发表于 2020-8-9 18:25:55

zw_7627 发表于 2020-8-9 16:56
现在C#下载时间做到2分钟多了,但是与C++的20秒相比,还是比较难以接受。相比较C++运行起来,CPU占有率10 ...

CPU占用很低,应该是因为你这个所谓的多线程,肯定是在有个地方执行sleep之类,或者是某种以系统定时周期为单位的等待函数。
如果当前没有数据,等待一下就过了一个系统定时周期,不管实际数据是不是0.1毫秒就已经到了。

redroof 发表于 2020-8-9 18:27:13

youkebing 发表于 2020-8-9 18:23
这个问题1年还在搞,很佩服,但把问题描述清楚,寻求网友支持,可能就一天! ...

哈哈,这是实话。
有太多的人,根本就不会把问题描述清楚。。。

chenchaoting 发表于 2020-8-9 18:29:23

c搞成DLL不行嘛

vtte 发表于 2020-8-9 19:30:49

你c++运行起来cpu占用100%也不科学啊。

xstt 发表于 2020-8-9 21:07:09

应该是代码问题啊,效率差不了那么多的。做点日志输出一下,例如应答时间,开始下载时间, 逐行发送数据时间这些记录一下就清楚了
页: [1]
查看完整版本: C#中的线程运行比C++中慢,是什么原因?