微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# - 测量经过时间的最有效方法

如何解决C# - 测量经过时间的最有效方法

我正在开发一个 C# 控制台应用程序,在该应用程序中我需要知道自程序启动以来经过的时间。
我有一个存储开始时间的变量 (DateTime Now = DateTime.Now;)

测量经过时间的最有效方法是什么?
经过的时间可能是几个小时 - 这就是我担心效率和内存使用情况的原因。

提前致谢!

解决方法

从程序开始的时间减去当前时间。这将返回一个 TimeSpan,它公开 properties 之类的 TotalHours,您可以使用它来计算经过的时间。

// on start
var startTime = DateTime.UtcNow;

// later on,to see hours elapsed since then
var elapsed = (DateTime.UtcNow - startTime).TotalHours;
,

别担心。测量时间跨度不使用任何资源,因为它只是比较现在和那时。

public async Task<List<Customer>> FetchCustomers(string userId,List<string> userRoles,string userEmail)
{
    if (userRoles.Contains("Admin"))
    {
         customer = _context.Customers;
    }
    else if (userRoles.Contains("Project Manager") ||
             userRoles.Contains("Business Analyst") ||
             userRoles.Contains("Developer"))
    {
         if (userRoles.Contains("Project Manager"))
         {
             customers = customers.Where(c => c.ProjectManager.ProjectManagerId == userId
                       || c.Projects.Any(op =>                                              
                          op.ProjectsCompleted.Any(assignee =>                                                           
                          assignee.UserId == userId)));
         }
         if (userRoles.Contains("Business Analyst"))
         {
             var allPossibleCustomers = _context.Customers.Where(c =>
                            c.Projects.Any(op => op.BusinessAnalysts.Any(ba => ba.BusinessAnalystId == userId)));

             customers = customers?.Union(allPossibleCustomers) ?? allPossibleCustomers;
         }
         if (userRoles.Contains(Roles.Developer.GetDescription()))
         {
              var allPossibleCustomers = _context.Customers.Where(c =>
              c.Projects.Any(op => op.PREDevDevelopersAssigned.Any(ba => ba.DeveloperId == userId)));
                    
             customers = customers?.Union(allPossibleCustomers) ?? allPossibleCustomers;
         }
    }
    var listData = await PagingList<Customer>.CreatePageAsync(customers,page,limit);
    return listData;
}

除了用于开始的变量外,它不使用任何资源,它只是一个 64 位计数器。

请注意,对于较短的时间跨度,最好使用 DateTime start = DateTime.Now; // do some heavy calculation TimeSpan delta = DateTime.Now - start; // get the time that elapsed ,因为这不受开始和现在之间可能发生的时间调整的影响。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?