.net 数据结构与算法基础:泛型编程、时间测试
2012-11-21 20:59
639 查看
泛型编程:
问题提出:
面向对象编程存在一个众所周知的问题:“代码膨胀”,对于方法或方法集合,为了说明其所有可能的返回类型需要进行多次冗余性编写,例如:对于一个值交换函数,函数处理值可能为字符型,也可能为整数型,或是浮点型,那么为满足不同功能需要不断重写相同功能代码,为解决此问题,我们提出了泛型编程。解决方法:
泛型类型提供占位符<>,在括号内填充特定的数值类型完成函数计算,具体示例如下:static void swap<T>(ref T var1, ref T var2)
{
T TEMP;
TEMP = var1;
var1 = var2;
var2 = TEMP;
}
static void Main(string[] args)
{
int num1 = 9;
int num2 = 25;
Console.WriteLine("交换前: num1:" + num1.ToString() + " num2:" + num2.ToString());
swap<int>(ref num1,ref num2);
Console.WriteLine(" num1:" + num1.ToString() + " num2:" + num2.ToString());
string str1 = "GAO";
string str2 = "XIANG";
Console.WriteLine("交换前: str1:" + str1 + " str2:" + str2);
swap<string>(ref str1, ref str2);
Console.WriteLine(" str1:" + str1 + " str2:" + str2);
Console.ReadLine();
}
程序结果:
时间测试:
.net环境下的时间测试有别于一般的时间测试方法,它采用基准法进行时间测试。之所以有所区别,是因为以下两点:1).NET环境需要考虑当前程序所处的线程。
2).NET环境下时间消耗需要考虑这样一种情形:无用单元收集可能在任何情况下发生。
第一个问题我们采用Process类解决,因为此类提供了选取当前进程的方法,对于第二个问题,我们知道存储在堆中的对象在删除前都需要通过finalizer方法,因此我们只要命令程序在所有的finalizer方法都运行后再开始计时。这样获得的时间将是准确的程序运行时间。示例如下:
public class TimeTest
{
TimeSpan duration;
public TimeTest()
{
duration = new TimeSpan(0);
}
public void start()
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
public void stop()
{
duration = Process.GetCurrentProcess().TotalProcessorTime;
}
public TimeSpan result()
{
return duration;
}
}
测试程序:
private static void Display(int[] num)
{
for (int i = 0; i < num.GetUpperBound(0); i++)
{
Console.Write(num[i] + " ");
}
}
private static void Builearray(int[] num)
{
for (int i = 0; i < num.GetUpperBound(0); i++)
{
num[i++] = i * i;
}
}
传统时间测试与基准时间测试对比如下:
程序下载:http://download.csdn.net/detail/xiang__jiangsu/4800781
相关文章推荐
- .net 数据结构与算法基础:泛型链表使用
- .net 数据结构与算法基础:图的操作
- .net开发后,空余时间学习C/C++,数据结构与算法
- .net 数据结构与算法基础:Hashtable
- .net 数据结构与算法基础:二叉树
- .net 数据结构与算法基础:高级排序
- 开发与面试涉及的基础数据结构和算法-Algorithm
- 备战软考(3) 数据结构算法基础
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 算法竞赛入门经典:第六章 数据结构基础 6.4测试
- 数据结构之算法时间复杂度
- 【索引】算法竞赛入门经典-第6章 数据结构基础
- 数据结构基础 排序算法(三)算法的稳定性
- 数据结构与算法基础1
- Mysql数据库索引原理--数据结构及算法基础
- 笔试、面试重点总结:算法基础、数据结构
- 【算法学习笔记】12.数据结构基础 图的初步1
- 数据结构与算法Python语言描述1--时间复杂度
- 基础算法(二)---数据结构之散列
- 算法与数据结构基础8:C++实现有向图——邻接表存储