首页 > 其他分享 >解决DDD最大难题-如何划分领域

解决DDD最大难题-如何划分领域

时间:2024-11-12 12:20:53浏览次数:1  
标签:难题 MethodTimer NET 耗时 划分 static message public DDD

https://www.cnblogs.com/Can-daydayup/p/18528659

 

前言

在.NET开发中,为了准确统计对应方法的执行时间,我们最常用的方式是手动使用 Stopwatch 来显式编写计时逻辑,但是假如你需要大量的使用 Stopwatch 来进行耗时统计的话不利于保持代码的整洁和增加代码的维护成本。

项目介绍

MethodTimer是一个.NET开源、免费(MIT License)、轻量级的运行耗时统计库,用于在编译时自动向指定方法注入计时代码,无需手动编写繁琐的计时逻辑。

创建控制台应用

创建名为:MethodTimerExercise的控制台应用。

安装NuGet

命令安装

PM> Install-Package Fody
PM> Install-Package MethodTimer.Fody

NuGet包管理器安装

搜索Fody安装:

搜索MethodTimer.Fody安装:

快速使用

通过在方法上添加 Time 属性,MethodTimer 会在编译时自动向 TimeMethod 注入计时代码。

        [Time]
        public static void TimeMethod()
        {
            for (int i = 0; i < 100; i++)
            {
                Console.WriteLine($"输出结果{i}");
            }
        }

使用ILSpy查看编译后的代码

 public static void TimeMethod()
 {
  Stopwatch stopwatch = Stopwatch.StartNew();
  try
  {
   for (int i = 0; i < 100; i++)
   {
    Console.WriteLine($"输出结果{i}");
   }
  }
  finally
  {
   stopwatch.Stop();
   string message = null;
   MethodTimeLogger.Log(MethodBase.GetMethodFromHandle((RuntimeMethodHandle)/*OpCode not supported: LdMemberToken*/, typeof(Program).TypeHandle), stopwatch.Elapsed, message);
  }
 }

耗时拦截器记录两种方法

运行耗时为long(毫秒):

        /// <summary>
        /// 运行耗时为long(毫秒)
        /// </summary>
        public static class MethodTimeLogger1
        {
            public static void Log(MethodBase methodBase, long milliseconds, string message)
            {
                Console.WriteLine($"方法:{methodBase.Name} 耗时:{milliseconds} 毫秒,信息:{message}");
            }
        }

运行耗时为TimeSpan:

        /// <summary>
        /// 运行耗时为TimeSpan
        /// </summary>
        public static class MethodTimeLogger
        {
            public static void Log(MethodBase methodBase, TimeSpan elapsed, string message)
            {
                Console.WriteLine($"方法:{methodBase.Name} 耗时:{elapsed.TotalMilliseconds} 毫秒,信息:{message}");
            }
        }

耗时统计时长输出

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看

标签:难题,MethodTimer,NET,耗时,划分,static,message,public,DDD
From: https://www.cnblogs.com/chinasoft/p/18541557

相关文章

  • HTTP的诞生:它解决了哪些网络通信难题?
    引言在互联网发展初期,网络通信面临许多挑战,例如设备兼容性、数据传输标准化以及信息访问效率等问题。超文本传输协议(HTTP,HyperTextTransferProtocol)的出现,成功解决了这些问题,使全球信息交换更加顺畅,成为了现代互联网的核心基石。本文将从技术和应用的角度分析HTTP解决了哪些......
  • 使用YOLOv8训练无人机检测数据集10158张 txt格式小目标检测 txt标注 标签名UAV 图片与
    准备工作安装依赖首先,确保你的开发环境中安装了必要的软件和库。YOLOv8是基于PyTorch框架的,因此你需要安装Python以及PyTorch。安装Python(推荐3.7或更高版本)安装PyTorch:你可以从PyTorch官方网站获取安装命令,根据你的系统配置选择合适的安装方式。克隆YOLOv8的官方仓库......
  • 网络基础:http协议和内外网划分
    声明学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频https://space.bilibili.com/350329294一,HTTP协议1......
  • 【计算机网络】子网划分
    子网划分ip地址分类公网:A类:1.0.0.0~127.255.255.255  作用:大量主机公网B类:128.0.0.0~191.255.255.255作用:国际大公司政府C类:192.0.0.0~233.255.255.255作用小公司校园网科研单位D类:234.0.0.0~239.255.255.255作用:组播E类:240.0.0.0......
  • 如何训练——草原牛羊马目标检测数据集 数据集拥有3个类别、总计2400张图片 支持YOLO
    如何使用YOLOv8进行草原牛羊马的目标检测,并提供详细的训练代码和数据集准备步骤。假设你已经有一个包含2400张图片的数据集,并且这些图片已经标注了YOLO格式的标签,且已经分好训练集、验证集和测试集。项目结构深色版本grassland_animal_detection/├──dataset/│......
  • 企业跨系统权限管理的常见难题与应对策略
    随着企业信息化建设的不断推进,越来越多的企业采用了多个业务系统来处理各自的业务需求。从财务管理、客户关系管理(CRM)到人力资源管理(HRM),这些系统都包含了大量企业关键数据和敏感信息。因此,如何有效管理跨多个系统的用户权限,成为了企业面临的一个重要挑战。企业的跨系统权限管......
  • 从单层到 MVC,再到 DDD:架构演进的思考与实践
    引言在日常开发中,我们之前工作中经常接手的大多数都是传统MVC架构体系的项目。然而,随着现在分布式和微服务架构的普及,越来越多的项目开始重构、拆分,传统的MVC架构也逐渐向DDD架构演进。为什么需要将传统架构重构为DDD架构?MVC架构相比如今备受关注的DDD架构又有......
  • HyperWorks实体网格划分
    实体网格剖分在HyperMesh中,使用SolidMap功能进行实体网格剖分。该面板如下图所示:图4-4SolidMap面板 Ø通过SolidMapPanel进行实体网格剖分:•通过主菜单栏选择3D页面>solidmap。•通过下拉式菜单选择Mesh>create>SolidMap。 ØSolidMap......
  • 11月7日 NOIP模拟(难题math、矩阵游戏matrix、括号序列seq、道路road) - 模拟赛记录
    PrefaceT1试图找规律失败,正经推反而几分钟就出来了。以后应该少想这些歪门邪道(除非实在闲的蛋疼或者没有一点头绪,且必须要打完所有能打的子任务比如暴力或特殊性质;而且必须在用常规方法思考过后,才能够用一些稍微不那么常规的方法)至于T2、T3、T4,因为知道T1浪费了太多时间,都是......
  • 乐维CMDB:基于图数据库破除配置项关系管理难题
    在当今数字化飞速发展的时代,企业的IT架构日益复杂,如同一个庞大而精密的机器。其中,配置管理数据库(CMDB)作为IT运维管理的核心部分,承载着企业IT资源配置信息的管理重任。而在CMDB的范畴内,配置项管理和配置项关系管理则是重中之重,它们直接影响着企业IT系统的稳定运行、故障......