C++和C#的性能比较
场景是这样的,有个逻辑对象的结构如下:
struct Msg
{
int type;
char name[12];
float height;
float width;
int count;
int flag;
}
C++和C#分别来做这个对象的传输。
传输方面没什么好说的,是操作系统IO的事情,和语言无关。
下面是收到数据之后进行parse,为了对比,我们把数据parse一百万次。
C++从socket收到char* input_raw_buf之后,只要:
Msg* msg;
memcpy(msg, input_raw_buf, sizeof(Msg));
一百万次耗时20毫秒。
C#从socket收到byte[] input_raw_buf之后,需要做:
Convert.ToInt32()
Convert.ToString()
这种方式被批太落后,直接就没测试。
C#优化,改用Marshal:
一百万次耗时1781毫秒。比C++慢80多倍。据说和上面被批最原始的方式性能相当。有谣言说Marshal只是语法糖。
C#再优化,改用BinaryReader:
BinaryReader reader;
msg.type = reader.ReadInt32();
还不够快。
再优化,改用伪指针的方式:
fixed (byte* p = data)
msg.type = *(int*)p;
msg.name = new string((sbyte*)p, 4, 12)
一百万次耗时484毫秒。比C++慢20多倍。
无法可想,没法再优化了。
最终的结果是,在parse二进制格式的数据的时候,C#比C++最少要慢20多倍。
(建议各位,不要采用unsafe的方式构建C#程序)
当然,我们也不会整天去parse二进制数据,因此C#众不用太担心。
我也用C#写过不少程序,性能也都马马虎虎能接受。
不过,一定要注意,C#在某些特定的环境下,有可能会慢得出乎你的意料。
(Java众先不要高兴,Java必定有同样的问题,因为Java和C#的基础架构是一样的)
转载于:https://www.cnblogs.com/hehe520/archive/2009/11/05/6330426.html
C++和C#的性能比较相关推荐
- kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势
陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...
- Go 学习笔记(81)— Go 性能分析工具 pprof
Go 语言工具链中的 go pprof 可以帮助开发者快速分析及定位各种性能问题,如 CPU消耗 .内存分配及阻塞分析 .具体作用如下: 性能分析首先需要使用 runtime.pprof 包嵌入到待分 ...
- pyspark性能调优参数
20220311 参数调节 把executor数量调小,其他参数值调大,不容易报错 一.指定spark executor 数量的公式 executor 数量 = spark.cores.max/spa ...
- 矩阵乘法的性能提升 AutoKernel
随着AI技术的快速发展,深度学习在各个领域得到了广泛应用.深度学习模型能否成功在终端落地应用,满足产品需求,一个关键的指标就是神经网络模型的推理性能.于是,一大波算法工程师为了算法的部署转岗算子优化工 ...
- TensorFlow与PyTorch模型部署性能比较
TensorFlow与PyTorch模型部署性能比较 前言 2022了,选 PyTorch 还是 TensorFlow?之前有一种说法:TensorFlow 适合业界,PyTorch 适合学界.这种说 ...
- App性能分析数据监控
App性能分析数据监控 APP的性能监控包括: CPU 占用率.内存使用情况.网络状况监控.启动时闪退.卡顿.FPS.使用时崩溃.耗电量监控.流量监控等等. 文中所有代码都已同步到github中,有兴 ...
- Yolo v4, v3 and v2 性能极简图示
Yolo v4, v3 and v2 性能图示 https://github.com/AlexeyAB/darknet 参考链接: https://github.com/AlexeyAB/darkne ...
- Arm Cortex-M4 MCU性能
Arm Cortex-M4 MCU性能 基于ARM Cortex-M和RISC-V内核,提供了丰富的产品组合和全面的软硬件支持. Arm Cortex-M4 MCU 基于Arm® Cortex®-M4 ...
- Arm Cortex-M3 MCU性能
Arm Cortex-M3 MCU性能 基于ARM Cortex-M和RISC-V内核,研发出来了产品组合和全面的软硬件支持. Arm Cortex-M3 MCU 基于Arm® Cortex®-M3内 ...
- TVM性能评估分析(七)
TVM性能评估分析(七) Figure 1. Performance Improvement Figure 2. Depthwise convolution Figure 3. Data Fusion ...
最新文章
- Java单元测试之JUnit4详解
- hibernate加载持久化对象的两种方式---------------load方式和get方式
- 如何计算MP3总时长的问题(二)
- 领扣 LeetCode 42:接雨水(java)(网易有道面试真题)
- 电商分类模块写法_模块化写作——网络小说创作之典藏秘籍
- python表示矩阵
- JDeveloper中的Java反编译器
- CodeForces - 500A-New Year Transportation(模拟)
- Java字符串分割(split)
- polycom安卓手机客户端_Spark,安卓上最好用的邮件客户端来了!附App下载
- 剑指OFFER之包含min函数的栈(九度OJ1522)
- [渝粤教育] 西南科技大学 微机原理与应用 在线考试复习资料(2)
- 隐匿函数,二分法 冒泡排序
- CDH集群更换IP处理方法
- 网络游戏外挂编写基础一
- 不可不知的CPU风扇清理技巧
- 产业安全专家谈丨数字经济高速发展,数据要素安全该如何保障?
- 自己整理的scratch说课讲义
- 把backtrader改造成金融强化学习回测引擎
- .NET操作Excel高效低内存的开源框架 - MiniExcel