摘要: 基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的集合 var config = new ReadConfig<ExcelTestDto>() .De 阅读全文
posted @ 2021-11-16 17:52 崩坏的领航员 阅读(1078) 评论(0) 推荐(3) 编辑
摘要: 有的时候我们会对程序进行单元测试, 为了测试的效果以及后期的维护, 我一般会将各个测试拆开, 根据需要测试的类分到各个类型中, 不过在实际操作的时候就出现了一些意想不到的问题, 各个测试的执行是乱序的, 按照我自己写测试的习惯, 假如我需要测试新写的增删改查的功能, 我会将增删改查分开测试, 会按照 阅读全文
posted @ 2023-11-06 11:03 崩坏的领航员 阅读(390) 评论(0) 推荐(3) 编辑
摘要: 一般来说多运行时多方法的基准测试会消耗很长时间, 但是在测试结果波动较大的时候会追加测试直到稳定, 这可能会阻塞整个测试流程 运行过程中能看到类似如下的日志记录 OverheadJitting 1: 1 op, 177900.00 ns, 177.9000 us/op WorkloadJitting 阅读全文
posted @ 2023-10-09 17:27 崩坏的领航员 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 之前的字符串判空测试中, 循环次数为固定的100次, 如果我想要测试1000次或者10000次, 就必须修改代码然后重新运行项目, 这样的操作是非常不方便的 因此可以标记运行中所使用的参数, 提前进行配置 [SimpleJob(RuntimeMoniker.Net70)] [SimpleJob(Ru 阅读全文
posted @ 2023-10-09 17:27 崩坏的领航员 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 在基准测试中, 除了运行耗时之外, 使用内存也是一项比较重要的指标, 下面介绍一下如何在最终的结果中展示内存方面的使用情况 // 由于现在需要展示内存方面的指标, 原来的字符串判空由于使用内存较少, 不适合用来做测试 // 因此定义了以下拥有相同属性的结构体和类 public struct SMod 阅读全文
posted @ 2023-10-09 17:26 崩坏的领航员 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 微软整天说dotnet的新版本比旧版本快了很多, 每次更新都说有性能提升, 有各种各样的调用优化, 为了验证微软是不是瞎说, 我们可以对比不同的运行时 首先需要修改项目文件, 将原来的单运行时换成多运行时 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGrou 阅读全文
posted @ 2023-10-09 17:26 崩坏的领航员 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 很多时候我们对比的目的非常简单, 就是看看两个方法哪个快哪个慢 上一个例子运行后得到的结果如下: Method Mean Error StdDev TestEmpty 0.0121 ns 0.0123 ns 0.0102 ns TestWhiteSpace 1.7137 ns 0.0306 ns 0 阅读全文
posted @ 2023-10-09 17:26 崩坏的领航员 阅读(7) 评论(0) 推荐(0) 编辑
摘要: Benchmark 项目的结构非常简单, 只需要创建最基础的控制台程序即可 dotnet new console -n benchmarkproject 然后添加nuget包应用 dotnet add package BenchmarkDotNet 或者直接修改 benchmarkproject.c 阅读全文
posted @ 2023-10-09 17:25 崩坏的领航员 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 有些时候我们实现了某个功能, 但是仅仅通过有限的几次调用无法知道这个功能的执行效率以及资源占用情况, 此时就可以使用 Benchmark 对这个功能进行基准测试 在 dotnet 中主要使用 BenchmarkDotNet BenchmarkDotNet 是一个.NET的基准测试框架, 主要用于测量 阅读全文
posted @ 2023-10-09 13:37 崩坏的领航员 阅读(73) 评论(0) 推荐(1) 编辑
摘要: 建造者模式是一种**创建型**的设计模式, 将一个对象的创建过程拆分成一个个小的部分, 每次决定其中的一个细节, 构建出一个复杂对象 对象的创建过程被拉长分散, 可能会经历一系列的复杂决策, 最终才会形成我们需要的对象 对象拥有多个参数, 或者拥有包含多个参数的构造函数, 通过建造者模式可以相对自由 阅读全文
posted @ 2023-09-06 14:28 崩坏的领航员 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 单例模式是一种**创建型**设计模式, 可以保证一个类型有且只有一个实例存在 ## 单例模式的适用于什么场景 当一个类在程序运行期间只需要一个实例的时候, 就可以考虑将其做成单例模式 例如一些全局的配置, 用来储存程序运行期间全局的共享配置, 或者可以做一个简单的消息管道, 程序中所有地方只需要这一 阅读全文
posted @ 2023-09-04 15:03 崩坏的领航员 阅读(4) 评论(0) 推荐(0) 编辑