iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#怎么比较dynamic和Dictionary性能
  • 155
分享到

C#怎么比较dynamic和Dictionary性能

2023-06-17 07:06:42 155人浏览 安东尼
摘要

C#怎么比较dynamic和Dictionary性能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。开发中需要传递变参,考虑使用 dynamic 还是  Diction

C#怎么比较dynamic和Dictionary性能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

开发中需要传递变参,考虑使用 dynamic 还是  Dictionary(准确地说是Dictionary<string,object>)。dynamic 的编码体验显著优于  Dictionary,如果性能差距不大的话,我会选择使用dynamic。搜索后没有找到类似对比数据,决定自行实验。

首先使用以下测试代码:

public void TestDynamic() {     var e = CallDynamic(new { Value = 0 });     int v = e.Value; }  public void TestDictionary() {     var dict = new Dictionary<string, object>();     dict["Value"] = 0;     dict = CallDictionary(dict);     int v = (int)dict["Value"]; }  private dynamic CallDynamic(dynamic test) {     int v = test.Value;     v++;     return new { Value = v }; }  private Dictionary<string, object> CallDictionary(     Dictionary<string, object> test) {     int v = (int)test["Value"];     v++;     var dict = new Dictionary<string, object>();     dict["Value"] = v;     return dict; }

分别比较运行 1次、10次、100次、1000次、1e4次、1e5次、1e6次 时间
结果:

C#怎么比较dynamic和Dictionary性能

其中dynamic列和dynamic2列的数据分别是:

在一次运行中执行一步测试 和 在一次运行中连续执行所有测试

分析测试过程和数据,得到以下结论:

dynamic***使用会产生一定的性能损耗
2.无论是否***使用,使用次数达到一定量级,dynamic性能一定优于Dictionary
3.一次运行中连续使用dynamic会显著拉低平均性能损耗

考虑到传递变参可能出现多个参数,以上测试不完全。

使用以下代码进行第二阶段实验:

public void InvokeDynamic() {     var e = CallDynamic2(         new { Value1 = 0, Value2 = 0L, Value3 = 0f, Value4 = 0.0, Value5 = "test" });     int v1 = e.Value1;     long v2 = e.Value2;     float v3 = e.Value3;     double v4 = e.Value4;     string v5 = e.Value5; }  public void InvokeDictionary() {     var dict = new Dictionary<string, object>();     dict["Value1"] = 0;     dict["Value2"] = 0L;     dict["Value3"] = 0f;     dict["Value4"] = 0.0;     dict["Value5"] = "test";     dict = CallDictionary2(dict);     int v1 = (int)dict["Value1"];     long v2 = (long)dict["Value2"];     float v3 = (float)dict["Value3"];     double v4 = (double)dict["Value4"];     string v5 = (string)dict["Value5"]; }  private dynamic CallDynamic2(dynamic test) {     int v1 = test.Value1;     long v2 = test.Value2;     float v3 = test.Value3;     double v4 = test.Value4;     string v5 = test.Value5;     v1++;     v2++;     v3++;     v4++;     v5 += "test";     return new { Value1 = v1, Value2 = v2, Value3 = v3, Value4 = v4, Value5 = v5 }; }  private Dictionary<string, object> CallDictionary2(     Dictionary<string, object> test) {     int v1 = (int)test["Value1"];     long v2 = (long)test["Value2"];     float v3 = (float)test["Value3"];     double v4 = (double)test["Value4"];     string v5 = (string)test["Value5"];     v1++;     v2++;     v3++;     v4++;     v5 += "test";     var dict = new Dictionary<string, object>();     dict["Value1"] = v1;     dict["Value2"] = v2;     dict["Value3"] = v3;     dict["Value4"] = v4;     dict["Value5"] = v5;     return dict; }

结果数据:

C#怎么比较dynamic和Dictionary性能

决定选择使用dynamic

有兄弟考虑可能Box损耗了性能导致Dictionary表现不佳,
专门做了第三阶段实验,对比dynamic和Dictionary<string,long>

具体数据不贴了,结果是dynamic在100000量级快一倍

看完上述内容,你们掌握C#怎么比较dynamic和Dictionary性能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: C#怎么比较dynamic和Dictionary性能

本文链接: https://www.lsjlt.com/news/287629.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#怎么比较dynamic和Dictionary性能
    C#怎么比较dynamic和Dictionary性能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。开发中需要传递变参,考虑使用 dynamic 还是  Diction...
    99+
    2023-06-17
  • C#、Java和Python性能比较分析
    本篇内容介绍了“C#、Java和Python性能比较分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实验这里使用三种语言进行矩阵乘法。 矩...
    99+
    2023-06-27
  • Laravel和CodeIgniter的性能比较
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-16
  • Hadoop和spark的性能比较
    本篇内容主要讲解“Hadoop和spark的性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hadoop和spark的性能比较”吧!  Hadoop和spark的性能比较  Spark在内...
    99+
    2023-06-02
  • C++与其他语言的性能比较
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • HTTPS、SPDY和HTTP/2的性能比较
    HTTPS、SPDY和HTTP/2都是与网络通信相关的协议,它们在性能方面有一些不同。HTTPS是HTTP的加密版本,通过使用SSL...
    99+
    2023-09-22
    HTTPS
  • PHP 和 JavaScript 中的 NumPy 库:性能和功能比较
    NumPy 是 Python 中用于数值计算和科学计算的核心库,它提供了高效的数组操作和运算。但是,除了 Python 之外,NumPy 在其他编程语言中也有相应的实现。本文将比较 PHP 和 JavaScript 中的 NumPy 库,...
    99+
    2023-11-11
    javascript 响应 numpy
  • 比较Flask应用部署的Gunicorn和uWSGI性能对比
    Flask应用部署:Gunicorn vs uWSGI的比较 引言:Flask作为一种轻量级的Python Web框架,受到了很多开发者的喜爱。在将Flask应用部署到生产环境时,选择适合的服务器网关接口(Server Gate...
    99+
    2024-01-17
    Flask gunicorn uwsgi
  • C++ 函数左值和右值参数传递的性能比较
    左值和右值参数传递的性能差异左值参数传递存在副本开销,降低性能,尤其是对于大型对象。右值参数传递避免副本开销,提升性能,尤适用于临时对象或字面量。 C++ 函数左值和右值参数传递的性能...
    99+
    2024-04-21
    左值 右值参数 c++
  • Oracle和DB2数据库性能比较分析
    Oracle和DB2数据库是两个领先的关系型数据库管理系统,它们在企业级应用程序中广泛使用。在实际应用中,数据库的性能往往是评价数据库系统优劣的重要指标之一。本文将对Oracle和DB...
    99+
    2024-03-09
    性能 oracle db sql语句
  • PHP 和 Bash 的性能比较:哪个更快?
    在编写脚本时,许多开发人员可能会使用 Bash 或 PHP。两种语言都有其优点和缺点,但是在性能方面,哪个更快呢?在本文中,我们将比较 Bash 和 PHP 的性能,并提供一些演示代码。 Bash 的性能 Bash 是一种命令行解释器...
    99+
    2023-10-08
    bash load windows
  • go和c++的map性能对比
    Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《go和c++的map性能对比》带大家来了解一下##content_title##,希望...
    99+
    2024-04-04
  • Golang标准库和外部库的性能比较
    目录1、路由2、JSON 序列化和反序列化3、是否使用ORM框架4、总结前言: 我已经在生产中使用 Go 一段时间了,因为它的构建规模较小,并且由 goroutines 提供的并发性...
    99+
    2024-04-02
  • WebSocket和HTTP协议的性能比较与选择
    引言:在web应用开发中,无论是实时聊天应用、多人在线游戏还是实时数据传输,网络连接的稳定性和传输效率都是关键要素之一。目前,WebSocket和HTTP是两种常用的网络传输协议,它们在性能和功能上有较大的差异。本文将重点讨论WebSock...
    99+
    2023-10-21
    websocket HTTP协议 关键词: 性能比较与选择
  • 比较Golang和Python的性能:哪个更高效?
    Golang和Python的性能对比:谁更胜一筹? 随着软件开发行业的迅猛发展,选择一种既高效又适用的编程语言变得尤为重要。本文将探讨两种流行的编程语言——Golang和Python的性能对比,旨在帮助读者了...
    99+
    2024-01-20
    Python Golang 性能比较
  • 用PHP连mysql和oracle数据库性能比较
    本篇内容主要讲解“用PHP连mysql和oracle数据库性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“用PHP连mysql和oracle数据库性能比较...
    99+
    2024-04-02
  • Python字典和列表性能之间的比较
    Python列表和字典 前面我们了解了 “大O表示法” 以及对不同的算法的评估,下面来讨论下 Python 两种内置数据类型有关的各种操作的大O数量级:列表 list 和字...
    99+
    2024-04-02
  • 怎么比较HashMap和TreeMap
    这期内容当中小编将会给大家带来有关怎么比较HashMap和TreeMap,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.AbstractMap抽象类和SortedMap接口AbstractMap抽象类:...
    99+
    2023-06-17
  • 比较分析C语言乘方函数的实现方法和性能
    C语言乘方函数的实现方法及性能比较分析 引言:乘方运算在数学和计算机科学中是非常常见和重要的操作,它用来计算一个数的n次方。C语言作为一种广泛应用于系统级开发的编程语言,提供了多种方式...
    99+
    2024-02-25
    c语言 性能比较 乘方函数
  • Sybase和Oracle数据库系统的功能与性能比较
    Sybase和Oracle数据库系统的功能与性能比较 随着信息技术的不断发展与进步,数据库系统作为企业管理信息化的基础设施之一,扮演着至关重要的角色。Sybase和Oracle作为主流...
    99+
    2024-03-08
    oracle 比较 sybase
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作