C#程序执行时间长查询速度慢解决方案

一,程序执行慢导致的原因就是查询数据库慢.,导致返回值慢,那这个要怎么解决呢?

1,优化数据库查询如这个文章 C#导出数据到excel如何提升性能

2,使用线程并行查询,然后合并成一个集合,代码如下,必须留意备注的核心点

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace TestConsoleApp
{
  /// <summary>
  ///C#慢查询解决: 线程并行实现处理
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      List<Task> taskList = new List<Task>();
      int count = 100;
      int batch = count % 10;
      object lockObj = new object();
      List<int> list = new List<int>();

      ///开启线程并行执行
      Stopwatch stopwatch = new Stopwatch();
      stopwatch.Start();
      for (int i = 0; i < batch; i++)
      {
        taskList.Add(Task.Run(() =>
        {
          for (int j = count * i; j < count * (i + 1); j++)
          {
            ///休眠等待,模拟慢查询需要消耗的时间
            Thread.Sleep(100);
            ///核心逻辑:避免线程插入冲突
            lock (lockObj)
            {
              list.Add(i);
            }
          }
        }));
      }
      ///这里核心是等待所有的线程结束,然后再执行下去
      Task.WaitAll(taskList.ToArray());
      ///这里再内存处理排序,避免返回的结果跟正常查询出来的结果排序不一致
      list = list.OrderByDescending(u => u).ToList();
      Console.WriteLine(stopwatch.ElapsedMilliseconds);

      Console.WriteLine("**********分割线***********");

      ///原始遍历实现
      List<int> list2 = new List<int>();
      Stopwatch stopwatch2 = new Stopwatch();
      stopwatch2.Start();
      for (int i = 0; i < count; i++)
      {
        ///休眠等待,模拟慢查询需要消耗的时间
        Thread.Sleep(100);
        list2.Add(i);
      }
      Console.WriteLine(stopwatch2.ElapsedMilliseconds);
      Console.ReadLine();
    }
  }
}

PS:核心点

1》线程等待线程结束Task.WaitAll

2》锁住集合,以防插入占用导致报错

3》结果需要排序,因为并行线程的结果是乱序的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Asp.Net(C#)自动执行计划任务的程序实例分析分享

    在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务.实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案.但是,对于Web应用程序来说,这些方法实现起来并不是很简单的,主机服务提供商或者不能直接提供这样的服务,或者需要你支付许多额外的费用. 本文就介绍

  • C#使用StopWatch获取程序毫秒级执行时间的方法

    本文实例讲述了C#使用StopWatch获取程序毫秒级执行时间的方法.分享给大家供大家参考.具体分析如下: 这个比时间通过DateTime在程序前后记录时间,然后通过TimeSpan相减的办法要精确,也更容易理解. using System.Diagnostics;//引用相关的命名空间 Stopwatch st=new Stopwatch ();//实例化类 st. Start();//开始计时 //需要统计时间的代码段 st.Stop();//终止计时 Response.Write(st.E

  • C#计算程序执行过程花费时间的方法

    本文实例讲述了C#计算程序执行过程花费时间的方法.分享给大家供大家参考.具体如下: 计算执行完程序花费的时间: void AddInfo() { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { Console.WriteLine(i.ToString()); System.Threading.Thread.Sleep

  • linux操作系统安装MONO执行C#程序的详解步骤

    第一步 环境(UBUNTU系统下) 复制代码 代码如下: sudo apt-get install mono-gmcs mono 第二步 建立example.cs 复制代码 代码如下: class X {static void Main () {System.Console.Write("My first mono app worked!/n"):}} 第三步 编译 复制代码 代码如下: gmcs example.cs 第四步 执行 复制代码 代码如下: ./example.exe 在

  • PowerShell 定时执行.Net(C#)程序的方法

    可能也有其他方法,比如用 WGet 等等,但是 推荐用 PowerShell ,为什么呢,因为 PowerShell 太强大呗 PowerShell 语法(demo1.ps1): 复制代码 代码如下: $date = Get-Date;$beginTime = 2 * 60 ;$endTime = 2 * 60 + 11;$minuteCount = $date.hour * 60 + $date.minute #if the time is rightif(($minuteCount -le

  • C#调用执行外部程序的实现方法

    本文实例讲述了C#调用执行外部程序的实现方法.分享给大家供大家参考.具体分析如下: 这里以调用notepad为例演示C#调用执行外部程序的方法. class Test { static void Main (string [] args) { System.Diagnostics.Process.Start ("notepad.exe"); } } 希望本文所述对大家的C#程序设计有所帮助.

  • C#实现程序等待延迟执行的方法

    本文实例讲述了C#实现程序等待延迟执行的方法.分享给大家供大家参考.具体如下: [System.Runtime.InteropServices.DllImport("kernel32.dll")] static extern uint GetTickCount(); /// <summary> /// 程序等待延迟执行 /// </summary> /// <param name="ms"></param> stati

  • C#程序执行时间长查询速度慢解决方案

    一,程序执行慢导致的原因就是查询数据库慢.,导致返回值慢,那这个要怎么解决呢? 1,优化数据库查询如这个文章 C#导出数据到excel如何提升性能 2,使用线程并行查询,然后合并成一个集合,代码如下,必须留意备注的核心点 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading

  • mysql处理海量数据时的一些优化查询速度方法

    由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速度简直无法容忍.曾经测试对一个包含400多万条记录(有索引)的表执行一条条件查询,其查询时间竟然高达40几秒,相信这么高的查询延时,任何用户都会抓狂.因此如何提高sql语句查询效率,显得十分重要.以下是网上流传比较广泛的30种SQL查询语句优化方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询

  • 如何使用索引提高查询速度

    使用索引提高查询速度1.前言在web开发中,页面模板,业务逻辑(包括缓存.连接池)和数据库这三个部分,数据库在其中负责执行SQL查询并返回查询结果,是影响网站速度最重要的性能瓶颈.本文主要针对MySql数据库,双十一的电商大战,引发了淘宝技术热议,而淘宝现在去IOE(I代表IBM的缩写,即去IBM的存储设备和小型机;O是代表Oracle的缩写,也即去Oracle数据库,采用MySQL和Hadoop替代的解决方案,;E是代表EMC2,即去EMC2的设备性,用PC Server替代EMC2),大量采

  • MySQL 查询速度慢与性能差的原因与解决方法

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSecond意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. TPS: 是 TransactionsPerSecond的缩写,也就是事务数/秒.它是软件测试结果的测量单位.客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数. Tips: 最好不要在主库上数据库备

  • MySQL如何优化查询速度

    前面章节我们介绍了如何选择优化的数据类型.如何高效的使用索引,这些对于高性能的MySQL来说是必不可少的. 但这些还完全不够,还需要合理的设计查询. 如果查询写的很糟糕,即使表结构再合理.索引再合适,也是无法实现高性能的. 谈到MySQL性能优化,查询优化作为优化的源头,它也是最能体现一个系统是否更快. 本章以及接下来的几章将会着重讲解关于查询性能优化的内容,从中会介绍一些查询优化的技巧,帮助大家更深刻地理解MySQL如何真正地执行查询.究竟慢在哪里.如何让其快起来,并明白高效和低效的原因何在,

  • postgresql通过索引优化查询速度操作

    当数据量比较大的时候,提升查询效率就是需要去考虑的事情了.一个百万级别的表格,如果不做任何优化的话,即使是最简单的查询语句执行起来也是慢的让人难以接受:当然"优化"本身是一个比较复杂的工程,从设计表.字段到查询语句的写法都有很多讲究,这里只考虑索引的方式,且是最普通的索引: 下面的操作中对应数据库表w008_execrise_info(8000数据量), w008_wf02_info(4000数据量) 1 任务表数据 SELECT w.* FROM w008_wf02_info w W

  • MySQL 查询速度慢的原因

    谈到MySQL性能优化,查询优化作为优化的源头,它也是最能体现一个系统是否更快.本章以及接下来的几章将会着重讲解关于查询性能优化的内容,从中会介绍一些查询优化的技巧,帮助大家更深刻地理解MySQL如何真正地执行查询.究竟慢在哪里.如何让其快起来,并明白高效和低效的原因何在,这样更有助于你更好的来优化查询SQL语句. 本章从"为什么查询速度这么慢"开始谈起,让你能够清楚的知道查询可能会慢在哪些环节,这样将有助于你更好的优化查询,做到心中有数,高人一筹. 一.慢在哪? **真正衡量查询速度

  • 小程序图片长按识别功能的实现方法

    背景 今天,做的小程序项目要求,个人中心的客服图片在用户长按时可以识别其二维码 在百度无果,参考小程序官方文档后,发现: 1.文档中有一句提示: "image组件中二维码/小程序码图片不支持长按识别,仅在 wx.previewImage 中支持长按识别" 2.即便实现了 "wx.previewImage" 效果,但依旧是不支持二维码识别的 附录文档位置:小程序图片长按识别 代码设计 好在这也是一个不错的知识点,在此进行一番实现流程的记录,欢迎指摘. ①. wxml

  • 在IPython中进行Python程序执行时间的测量方法

    在写MATLAB的脚本的时候我时长会用tic.toc进行一下程序运行时间的测量.在Python中偶尔也会测试下,但是基本上都是靠使用time模块.接触了IPython之后突然间发现,原来程序执行时间的测试可以如此简单! 在IPython中,程序执行时间的测试是通过魔术函数来实现.这个功能的魔术函数有两个,一个是time,还有一个是timeit.后面这个功能与前面的功能类似,但是更为精确,因为测试采用了多次测试求取平均值的方式实现. 之前写了一个简单的测试小脚本, #!/usr/bin/pytho

  • MySQL全文索引、联合索引、like查询、json查询速度哪个快

    查询背景 有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outline,存了一对多关系(保存了多个编码,例如jy1577683381775) 我们需要在这10万条数据中检索特定类型的数据,目标总数据量:2931条 SELECT COUNT(*) FROM tmp_test_course WHERE `type`=5 AND del=2 AND is_leaf=1 我们在限定为上面类型的同时,还得包含下面任意一个编码(也就是OR查询) jy157768338177

随机推荐