首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# 程序内的类数量对程序启动的影响

最近我在项目写了几万行代码,小伙伴担心会让程序启动速度变慢,所以本渣就来做测试。 本渣使用了代码创建器,创建了 1000 个垃圾文件,这些文件都很简单。...Program { static void Main(string[] args) { } } } 这应该就是最快的控制台的代码了...附加调试可以看到运行的时间都不是自己写的代码的时间,总时间是 138ms 实际运行的时间会比这个少。每个人的设备测试的时间都会不相同,而且每个时间运行的值都不太一样 ?...我接着运行了2次,收集到的空控制台窗口的运行时间 空控制台窗口运行时间 第一次:138ms 第二次:110ms 第三次:116ms 写一个空白的类是很简单的,我使用了下面的代码创建随机的类的名...return lardurDairlel.ToString(); } private Random _ran = new Random(); } 然后使用下面代码创建随机的类

49940
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JSDoc 初探:代码内的文档标记

    JSDoc 工具将扫描你的源代码并为您生成一个 HTML 文档网站(当然,即使你不进行生成,其也被大部分浏览器所识别和支持)。JSDoc 的目的是记录 JavaScript 应用程序或库的 API。...JSDoc是一种用于为JavaScript代码生成文档的工具。它基于标签(tag)的形式,通过注释来提取代码中的类型、描述、参数、返回值等信息,生成文档供其他人参考。...使用JSDoc可以提高代码可读性和可维护性,让代码更易于理解和使用。在阅读和使用第三方库时,可以通过查看JSDoc生成的文档来了解函数和方法的使用方式、参数、返回值等信息。...需要注意的是,在JSDoc中标记参数具有默认值并不会改变函数或方法的实际调用方式,你可以只在注释中写好标记的默认参数,而不写在代码中,反之亦然(君子协定)。...对象内的参数,你可以使用嵌套的@property标签。

    27310

    编写高质量代码改善C#程序的157个建议

    以下的代码就是一个不自觉应用协变的例子: class Employee { public string Name { get; set; } } class...正是因为在FCL4.0以前的版本中,协变是如此自然的一种应用,所以我们很有可能写出这样的代码: class Employee { public string Name {...编译器对于接口和委托类型参数的检查是非常严格的,除非用关键字out特别声明(这个会在下一个建议中进行阐述),不然这段代码只会编译失败,要让PrintSalary完成需求,我们可以使用泛型类型参数:...由于IEnumerable现在支持协变,所以上段代码在FCL4.0中能运行得很好。...在我们自己的代码中,如果要编写泛型接口,除非确定该接口中的泛型参数不涉及变体,否则都建议加上out关键字。协变增大了接口的使用范围,而且几乎不会带来什么副作用。

    33530

    编写高质量代码改善C#程序的157个建议

    本文主要来学习以下几点建议   建议61、避免在finally内撰写无效代码   建议62、避免嵌套异常   建议63、避免“吃掉”异常   建议64、为循环增加Tester-Doer模式而不是将try-catch...置于循环内 建议61、避免在finally内撰写无效代码 先直接来看一下三个简单的try catch方法 public class User { public string...如果参数的类型是值类型,压栈的就是复制的值,如果是引用类型,则在方法内对于参数的修改也会带到方法外。...建议64、为循环增加Tester-Doer模式而不是将try-catch置于循环内   如果需要在循环中引发异常,你需要特别注意,因为抛出异常是一个相当影响性能的过程。...以上代码中,我们预见了代码可能会发生DivideByZeroException异常,于是,调整策略,对异常发生的条件进行了特殊处理:Continue,让效率得到了极大的提升。

    70510

    编写高质量代码改善C#程序的157个建议

    来确保值类型也可以为null   建议6、区别readonly和const的使用方法   建议7、将0值设为枚举的默认值   建议8、避免给枚举类型的元素提供显式的值   建议9、习惯重载运算符 建议4...在C#中,值被取出来后,为了将它赋值给int类型,不得不首先判断一下它是否为null。如果将null直接赋值给int类型,会引发异常。   ...所以建议将0设置为枚举的默认值。 建议8、避免给枚举类型的元素提供显式的值  一般情况下,没有必要给枚举类型的元素提供显式的值。创建枚举的理由之一,就是为了代替使用实际的值。...不正确的为枚举类型的元素设定显式的值,会带来意想不到的错误。...当编译器发现元素ValueTemp的时候,它会自动在Tuesday=2的基础上+1,所以ValueTemp的值和Wednesday的值都是3。可见,枚举元素允许设定重复的值。

    47450

    编写高质量代码改善C#程序的157个建议

    :{2}",item.FirstName,item.LastName,item.Title)); } Console.ReadLine(); 通过上面的代码可以发现...} Console.ReadLine(); image.png 通过监控可以发现它是组合两个查询语句,而生成了一条SQL,如果不理解这一点,那么在编写程序时将会造成性能损耗...可以发现以上方式实现的排序至少存在两个问题: 1)可扩展性太低,如果存在新的排序要求,就必须实现新的比较器。 2)对代码的侵入性太高,为类型继承了接口,增加了新的 方法。...来看使用LINQ之后的代码: public class Salary { /// /// 姓名 /// 的便捷性,但我们仍需要掌握比较器、迭代器、索引器的原理,以便更好地理解LINQ的思想,写出更高执行的代码。

    96350

    C#中常用的几种读取XML文件的方法

    里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影。...微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文件。    ...“在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性的加载整个文档到内存中...具体参见在Visual C#中使用XML指南之读取XML     下面我将介绍三种常用的读取XML文件的方法。...,你要先知道哪一个结点具有几个属性,然后通过GetAttribute方法来读取.读取属性还可以用另外一种方法,就是用MoveToAttribute方法.可参见下面的代码: 1: if (reader.Name

    6.2K21

    编写高质量代码改善C#程序的157个建议

    本条建议将从两个方面来探讨如何规避这类性能开销:   1、确保尽量少的装箱   2、避免分配额外的内存空间 先来介绍第一个方面,请看下面的两行代码: String str1="str1"+9; String...str2="str2"+9.ToString(); 从IL代码可以得知,第一行代码在运行时完成一次装箱的行为,而第二行代码中并没有发生装箱的行为,它实际调用的是整型的ToString()方法,效率要比装箱高...像下面的代码就会带来运行时的额外开销。...在上面的代码中,如果预先判断字符串的长度将大于16,则可以为其设定一个更加合适的长度(如32)。StringBuilder重新分配内存时是按照上次容量加倍进行分配的。...///因为在C#中,所有的类型都是继承自object的,所以这里编译没有什么问题。

    57740

    编写高质量代码:改善C#程序的157个建议

    编写高质量代码:改善C#程序的157个建议 2014-12-13 张子阳 推荐: 4 难度: 3 ? 这本书汇集了C#编写中的一些建议、注意事项和小技巧,为了温故知新,又拿出来翻看了一遍。...很多主题要阐述的内容是显而易见、不言自明的,就没有再写摘要。部分主题的名称起得并不够好,我进行了改动;个别建议是有争议的,我修改为了我认为合理的方式(红色字体)。...总是使用TryParse,不使用Parse 恰当使用Nullable类型 如果数据库的字段可为null,那么对应的C#实体类属性也应当可以为null。使用int?...重写Equals()时同时重写GetHashCode() 否则会出现潜在的不易察觉的BUG,例如在Dictionary中,CLR内部查找的实际是Key值的HashCode...迭代器应当是只读的 注意集合类型成员的可访问性 如果集合类型的属性是可写的,则可能引发线程安全的问题(建议22)。

    2.6K30

    编写高质量代码改善C#程序的157个建议

    另外,“异常”其名称本身就说明了它的发生是一个小概率事件。所以,因异常带来的效率问题会倍限制在一个很小的范围内。实际上,try catch所带来的效率问题几乎忽略的。...另一种规避因为异常而影响效率的方法是:Tester-doer模式,下文将详细阐述。   本章将给出一些在C#中处理CLR异常方面的通用建议,一帮助大家构建和开发一个运行良好和可靠的应用系统。   ...     在异常机制出现之前,应用程序普遍采用返回错误代码的方式来通知调用者发生了异常。...语法特性决定了其不能具备任何返回值,于是异常机制倍当作取代错误代码的首要选择。 59、不要在不恰当的场合下引发异常     最常见不易引发异常的情况是对在可控范围内的输入和输出引发异常。...第一种情况 如果运行代码后会造成内存泄漏、资源不可用,或者应用程序状态不可恢复,则引发异常。 第二种情况 在捕获异常的时候,如果需要包装一些更有用的信息, 则引发异常。

    1.3K31

    编写高质量代码改善C#程序的157个建议

    前言     软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和若干集合类。不管是数组还是集合类,它们都有各自的优缺点。如何使用好集合是我们在开发过程中必须掌握的技巧。...不要小看这些技巧,一旦在开发中使用了错误的集合或针对集合的方法,应用程序将会背离你的预想而运行。   ...下面我们来看一段简单的测试性能的代码: class Program { static int collectionCount = 0; static Stopwatch...我上面测试的次数是10000000,可以发现,两者在垃圾回收次数和耗时都差距比较大,所以泛型集合有着非泛型集合无法超越的优势。所以还是尽量在我们的程序中使用泛型集合吧。...主要是因为线程一在暂停之后,开始运行线程二随即线程一得到通知可以继续运行,通过代码可以发现都有Thread.Sleep(1000);也就是为了保证两个线程都还在运行期间,线程二移除了集合中的一个元素,那么当线程一再次循环的时候

    54241

    编写高质量代码改善C#程序的157个建议

    前言   泛型并不是C#语言一开始就带有的特性,而是在FCL2.0之后实现的新功能。基于泛型,我们得以将类型参数化,以便更大范围地进行代码复用。同时,它减少了泛型类及泛型方法中的转型,确保了类型安全。...一旦我们开始编写稍微复杂的C#代码,就肯定离不开泛型、委托和事件。本章将针对这三个方面进行说明。   ...我们可以把MyList和MyList视作两个完全不同的类型,但是,这仅是对本地代码而言的,对于实际的C#代码,它仅仅拥有一个类型,那就是泛型类型MyList。   ...让类型支持类型安全,可以让程序在编译期间就过滤掉部分Bug,同时也能让代码规避掉”转型为object类型“或“从object转型为实际类型”所带来的效率损耗。...泛型为C#带来的是革命性的变化,FCL之后的很多功能都是借助泛型才得到了很好的实现,如LINQ。LINQ借助于泛型和扩展方法,有效地丰富了集合的查询功能,同时避免了代码爆炸并提升了操作的性能。

    62120
    领券