Parallel并行运算实例
并行运算Parallel,是.net 4.0版本里添加的新处理方式,主要充分利用CPU、任务并发的模式来达到提高运算能力。简单理解为每个CPU都在处理任务,而不会让它们空闲下来。
直接看实例:
namespace ConsoleParallel
{
class Program
{
static void Main(string[] args)
{
Stopwatch watch1 = Stopwatch.StartNew();
for (int i = 0; i < 4; i++)
{
RunMethod(i);
}
Console.WriteLine("非并行耗时:" + watch1.ElapsedMilliseconds); Stopwatch watch2 = Stopwatch.StartNew();
Parallel.For(0, 4, (i) =>
{
RunMethod(i);
});
Console.WriteLine("并行耗时:" + watch2.ElapsedMilliseconds);
} private static void RunMethod(int i)
{
switch (i)
{
case 1:
Test1();
break;
case 2:
Test2();
break;
case 3:
Test3();
break;
case 4:
Test4();
break;
}
} private static void Test1()
{
System.Threading.Thread.Sleep(10000);
} private static void Test2()
{
System.Threading.Thread.Sleep(20000);
} private static void Test3()
{
System.Threading.Thread.Sleep(4000);
} private static void Test4()
{
System.Threading.Thread.Sleep(6000);
}
}
}
运行效果如下:
通过以上结果:我们发现,Parallel并发在性能和效率上提高了不少。
Parallel.ForEach(lists, (obj) => {
Response.Write(obj+"<br/>");
});
应用:将大数据加载在内存中时,借助多个方法并行去处理,每个方法执行部分数据加载,然后借助swich来区分,可以有效的提高速度。
Parallel并行运算实例的更多相关文章
- ahjesus C# 4.0 Parallel 并行运算
Parallel.For - for 循环的并行运算 Parallel.ForEach - foreach 循环的并行运算 Parallel.Invoke - 并行调用多个任务 Task - 任务,基 ...
- c# Parallel并行运算
string str = ""; DataTable dt=new DataTable(); dt.Columns.Add("name", typeof(Sys ...
- C# 使用Parallel并行开发Parallel.For、Parallel.Foreach实例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- c# Parallel 并行运算 异步处理
var list = new List<string> { "https://www.baidu.com","https://associates.amazo ...
- 转载python并行运算实例
Python的并发处理能力臭名昭著.先撇开线程以及GIL方面的问题不说,我觉得多线程问题的根源不在技术上而在于理念.大部分关于Pyhon线程和多进程的资料虽然都很不错,但却过于细节.这些资料讲的都是虎 ...
- 学习笔记——并行编程Parallel
Parallel 并行运算 参考资料:http://www.cnblogs.com/woxpp/p/3925094.html 1.并行运算 使用Parallel并行运算时,跟task很像,相当于tas ...
- 【C# Parallel】ParallelOptions
ParallelOptions 构造函数 此构造函数用默认值初始化实例. MaxDegreeOfParallelism 初始化为-1,表示没有对应采用的并行度进行上限设置. CancellationT ...
- Oracle调优总结(经典实践 重要)
转载:http://langgufu.iteye.com/blog/1974211 Problem Description:1.每个表的结构及主键索引情况2.每个表的count(*)记录是多少3.对于 ...
- 大型系统开发sql优化总结(转)
Problem Description: 1.每个表的结构及主键索引情况 2.每个表的count(*)记录是多少 3.对于创建索引的列,索引的类型是什么?count(distinct indexcol ...
随机推荐
- execute、executeUpdate、executeQuery三者的区别(及返回值)
1. ResultSet executeQuery(String sql); 执行SQL查询,并返回ResultSet 对象. 2.int executeUpdate(String sql); 可执行 ...
- python pip和easy_install使用方式(转载)
easy_install 跟 pip 都是Python 的套件管理程式,有了它们,在使用 Python 开发程式的时候会带来不少方便. easy_install 和pip 有什麼不一样?据 pip 官 ...
- 邻结矩阵的建立和 BFS,DFS;;
邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...
- oracle merge into 语法
MERGE INTO upperLowerLimitData t1 USING (select name,enname,starttime,value ... from dual) t2 ON ( ...
- 2006: [NOI2010]超级钢琴 - BZOJ
Description小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为 ...
- protocol buffer 整数序列化
http://blog.csdn.net/csfreebird/article/details/7624807 varints用于正整数 (无符号整数) varints 是 一个很不错的技术.将一个整 ...
- ORA-01031:insufficient privileges
描述:oracle11g用scott用户在plsql上以sysdba身份登录显示以上错误,可是在cmd面板中却正常,网上各种找答案不没有对症,最后这位网友的回答解决了我的问题. 原帖网址:http:/ ...
- Android SDK下载地址
原地址:http://lameck.blog.163.com/blog/static/38811374201262111309677/ Android SDK.ADT.tools等官方下载地址(201 ...
- 140304笔记, mysql 更改自动增长字段值的重新设定
1. 存在同名的或不同的namespace交错情况. Caused by: com.ibatis.sqlmap.client.SqlMapException: There is no result m ...
- mysql 常用操作
添加用户并设置权限: grant all on *.* to root@‘%’ identified by ‘123456’with grant option; all:所有权限 select,ins ...