关键词:SeeSharpTools、数组、向量
导读
SeeSharpTools是锐视测控平台的重要组成部分,为用户提供了测试测量常用的功能。为了给用户提供更好的支持,简仪会定期的更新SeeSharpTools中的功能。本期小百科就介绍SeeSharpTools中近期新增的算法:Vector。
Vector算法介绍
Vector是数组计算中的一个类,其中封装了多种方法,用于不同类型数组间的计算。
对比之前SeeSharpTools中的数组计算,增加了数组比较、复数数组生成、点积计算、弧度/角度换算、对数计算等新的方法。支持float、double、short、int、Complex等更多数据类型。
Vector算法基于Intel的IPP和MKL软件函数库封装,计算更高效且结果可靠。
下表罗列了Vector类中的方法。

这里只介绍了Vector算法的功能分类,其中每种算法的具体用法,可以在SeeSharpTools中的手册中查阅。
Vector算法演示
此次算法更新,建立在MKL/IPP算法库的基础上,效率有了很大提升。
以数组加法为例,下面的代码演示如何调用Vector中的算法,并使用StopWatch对计算过程进行计时,对计算效率进行对比。
//建立数组
double[] data = new double[100000000];
Random random = new Random();
for (int i = 0; i < data.Length; i++)
{
data[i] = random.Next(0, 100);
}
//调用Vector做数组加法并计时
Stopwatch sw = new Stopwatch();
sw.Start();
Vector.ArrayAdd(data, 5);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
//普通方式做数组加法并计时
sw.Restart();
for (int i = 0; i < data.Length ; i++)
{
data[i]= data[i] + 5;
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
Console.ReadKey();
可以看到,这段代码,是将一个100M的数组中每个元素加5,运行之后,可以看到,常规算法需要712ms,而Vector中的算法只需要167ms。

图 1 100M数据运行结果