C#中的线程运行比C++中慢,是什么原因?
C#移植了C++的boot 下载线程,可以下载成功,但是C#确需要10分钟,而C++只要10秒,是什么原因? c#比c++慢是正常的,但你这个差了600倍就不正常了 liuqian 发表于 2019-7-14 16:57c#比c++慢是正常的,但你这个差了600倍就不正常了
都是线程,C++里面的线程比C#里面的线程还要多。为什么会慢?有没有思路可查? {:sweat:}10分钟与10秒的差异,这数据太吓人了 要加文件时间戳日志分析了 这种差异肯定是编程的问题
语言上没有这么大差别 性能问题先用 Visual Studio 的性能探查器大概看一眼,看看哪里耗时多
c#效率比c++差是肯定的。但是好像没那么严重吧。 贴代码出来,看一下 c#并不是效率差,而是启动的时候体验差,它是中间码运行 语言有差别,再怎么有差别,都不会差60倍吧。。。
是不是移植的时候,什么地方没注意。 codefish 发表于 2019-7-14 22:02
贴代码出来,看一下
公司代码不方便全部贴出,讲下我的思路吧。
接收线程中,判断接收下位机是否有应答
{
if(有应答信号)
{
event.set();
}
}
下载线程中
{
逐行发送数据;
if(event.WaitOne())
{
发送下一行数据;
}
}
关于以后 发表于 2019-7-14 22:35
语言有差别,再怎么有差别,都不会差60倍吧。。。
是不是移植的时候,什么地方没注意。 ...
我也担心是这个原因。。。 wudicgi 发表于 2019-7-14 21:48
性能问题先用 Visual Studio 的性能探查器大概看一眼,看看哪里耗时多
现在C#下载时间做到2分钟多了,但是与C++的20秒相比,还是比较难以接受。相比较C++运行起来,CPU占有率100%,C#只有10%。 这个问题1年还在搞,很佩服,但把问题描述清楚,寻求网友支持,可能就一天! zw_7627 发表于 2020-8-9 16:56
现在C#下载时间做到2分钟多了,但是与C++的20秒相比,还是比较难以接受。相比较C++运行起来,CPU占有率10 ...
CPU占用很低,应该是因为你这个所谓的多线程,肯定是在有个地方执行sleep之类,或者是某种以系统定时周期为单位的等待函数。
如果当前没有数据,等待一下就过了一个系统定时周期,不管实际数据是不是0.1毫秒就已经到了。
youkebing 发表于 2020-8-9 18:23
这个问题1年还在搞,很佩服,但把问题描述清楚,寻求网友支持,可能就一天! ...
哈哈,这是实话。
有太多的人,根本就不会把问题描述清楚。。。 c搞成DLL不行嘛 你c++运行起来cpu占用100%也不科学啊。 应该是代码问题啊,效率差不了那么多的。做点日志输出一下,例如应答时间,开始下载时间, 逐行发送数据时间这些记录一下就清楚了
页:
[1]