水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
下页
|
尾页
|
1/3
|
转到
主题:出乎意料,C++和dotnet6比dotnet5慢10% (转载)
楼主
|
finlab
|
2021-12-12 11:26:29
|
展开
【 以下文字转载自 Programming 讨论区 】
发信人: finlab (挨踢卢瑟), 信区: Programming
标 题: 出乎意料,C++和dotnet6比dotnet5慢10%
发信站: 水木社区 (Sun Dec 12 11:19:41 2021), 站内
被审核,直接发不出来
--
FROM 123.112.64.*
2楼
|
finlab
|
2021-12-12 11:53:31
|
展开
是的, 一般情况下, 这个范围的差异可以忽略。
这个测试比较单一。 不过可以推测,大家的浮点数运算也是接近的。
相同的运算基本生成相同的代码。
实际中性能差异,可能主要在内存管理方面,
c++ 大量在stack上分配内存,效率极高,但是c++的堆管理再加上智能指针的开销,应该没有c#高效
另外,C++ 中对象拷贝和移动的开销也明显高于C#中的直接引用赋值。
另外,C# 中反射、各种安全检查的开销也不可忽视。但是 C++中要获得这些功能也需要开销。
所以从目前来看,已经没法说C++对C#有压倒性优势,只能针对具体应用做比较了。
【 在 here080 的大作中提到: 】
: 你这个差别太小了,很难说是语言相关吧。
:
--
FROM 123.112.64.*
6楼
|
finlab
|
2021-12-12 13:47:20
|
展开
这个测试不涉及这些。
我说的是一般应用场合的情况。
【 在 z16166 的大作中提到: 】
: C#都知道用引用,然后用C++写居然不用引用?
:
--
FROM 123.112.64.*
7楼
|
finlab
|
2021-12-12 13:53:35
|
展开
没有用任何库函数。
【 在 here080 的大作中提到: 】
: 这个是代码问题吧?
: 可能你用的库在设计上没有用好C++?
: 另外是不是系统资源调配上C#跟windows系统比较贴合?
: ...................
--
FROM 123.112.64.*
8楼
|
finlab
|
2021-12-12 14:01:14
|
展开
代码还是发不出来。
【 在 here080 的大作中提到: 】
: 这个是代码问题吧?
: 可能你用的库在设计上没有用好C++?
: 另外是不是系统资源调配上C#跟windows系统比较贴合?
: ...................
--
FROM 123.112.64.*
9楼
|
finlab
|
2021-12-12 14:32:00
|
展开
用vc++2022版测试, 6.55秒, 还是明显比c#慢。
【 在 here080 的大作中提到: 】
: 这个是代码问题吧?
: 可能你用的库在设计上没有用好C++?
: 另外是不是系统资源调配上C#跟windows系统比较贴合?
: ...................
--
FROM 123.112.64.*
11楼
|
finlab
|
2021-12-12 15:07:16
|
展开
我比的就是正常代码, 不用专门优化情况下的性能。
同样的逻辑, 不管什么原因。 如果人家C#编译器能优化,C++编译器就优化不了,那就是C#的优势。
【 在 hgoldfish 的大作中提到: 】
: 有些 micro benchmark 还会发现 python 比 cpp 快呢。
: 在 programming 版看到你发的代码了。直觉你的 cpp 代码还可以进行改进。比如减少在循环里面的两个 if() 判断,那个太伤 cpu 的流水线了。
: 而 c# 代码想要进一步的改进可能比较难。
: ...................
--
FROM 123.112.64.*
14楼
|
finlab
|
2021-12-12 15:16:10
|
展开
完全一样的
除了 int*buf 改成int[] buf
【 在 here080 的大作中提到: 】
: 还有C#的对比代码?
:
--
FROM 123.112.64.*
15楼
|
finlab
|
2021-12-12 15:17:58
|
展开
不用专门初始化啊, 填到哪里,用到哪里。
实际上, 用vector,push_back更直观些。
【 在 here080 的大作中提到: 】
: 你这样不行啊,你的buf没有初始化
:
--
FROM 123.112.64.*
18楼
|
finlab
|
2021-12-12 15:47:53
|
展开
这个buf是存放已经发现的素数,动态增长的。
【 在 hgoldfish 的大作中提到: 】
: List<int> buf = new List<int>();
: buf.Add(2);
: 不是有 n 个元素吗?
: ...................
--
FROM 123.112.64.*
下页
|
尾页
|
1/3
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版