11 2023 档案

摘要:前几天有人在我的《ASP.NET Core框架揭秘》读者群跟我留言说:“我最近在看ASP.NET Core MVC的源代码,发现整个系统太复杂,涉及的东西太多,完全找不到方向,你能不能按照《200行代码,7个对象——让你了解ASP.NET Core框架的本质》这篇文章思路剖析一下MVC框架”,今天我们就来试试看。 阅读全文
posted @ 2023-11-08 08:31 Artech 阅读(4651) 评论(33) 推荐(57) 编辑
摘要:在过去一段时间里,我陆陆续续写一些关于.NET对象类型布局的文章,其中包括值类型和引用类型的内存布局、字符串对象和数组的内存布局等,这里作一个简单的汇总。 阅读全文
posted @ 2023-11-07 08:11 Artech 阅读(1946) 评论(4) 推荐(13) 编辑
摘要:在《NativeBuffering,一种高性能、零内存分配的序列化解决方案[性能测试篇]》我比较了NativeBuffering和System.Text.Json两种序列化方式的性能,通过性能测试结果可以看出NativeBuffering具有非常明显的优势,有的方面的性能优势甚至是“碾压式”的,唯独针对字符串的序列化性能不够理想。我趁这个周末对此做了优化,解决了这块短板,接下来我们就来看看最新的性能测试结果和背后“加速”的原理。 阅读全文
posted @ 2023-11-06 08:29 Artech 阅读(1367) 评论(7) 推荐(13) 编辑
摘要:实现一个极简的字节数组对象池.NET利用ArrayPoolPool<T>和MemoryPool<T>提供了针对Array/Memory<T>的对象池功能。最近在一个项目中需要使用到针对字节数组的对象池,由于这些池化的字节数组相当庞大,我希望将它们分配到POH上以降低GC的压力。由于ArrayPoolPool<T>没法提供支持, 阅读全文
posted @ 2023-11-03 08:22 Artech 阅读(2254) 评论(5) 推荐(17) 编辑
摘要:第一版的NativeBuffering([上篇]、[下篇])发布之后,我又对它作了多轮迭代,对性能作了较大的优化。比如确保所有类型的数据都是内存对齐的,内部采用了池化机器确保真正的“零内存分配”等。对于字典类型的数据成员,原来只是“表现得像个字段”,这次真正使用一段连续的内存构架了一个“哈希表”。我们知道对于每次.NET新版本的发布,原生的JSON序列化(System.Text.Json)的性能都作了相应的提升,本篇文章通过具体的性能测试比较NativeBuffering和它之间的性能差异。 阅读全文
posted @ 2023-11-02 09:46 Artech 阅读(2832) 评论(26) 推荐(20) 编辑
摘要:两种基于时间窗口的限流器的简单实现之前开发的一款基于OpenTelemetry的Tracing组件需要使用基于速率限制(Rate Limiting)的跟踪采样策略,本想使用现有的解决方案,比如System.Threading.RateLimiting命名空间下的RateLimiter。大体看了RateLimiter的三种实现(固定窗 阅读全文
posted @ 2023-11-01 08:29 Artech 阅读(1153) 评论(1) 推荐(7) 编辑