C# 集合性能比较(代码测试)

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

namespace Table_And_List
{

    public class Program
    {

        public static void Main(string[] args)
        {
            int total = 100000;
            int[] x = new int[9999999];
            for (int i = 0; i < x.Length; i++)
            {
                x[i] = i;
            }
            int[] x2 = new int[] { 6666, 333, 11111, 56764, 33335 };
            int x3 = new Random().Next(total);
            SortedDictionaryTest(x, x2, x3);
            DictionaryTest(x, x2, x3);
            SortedListTest(x, x2, x3);
            HashtableTest(x, x2, x3);
            Console.ReadKey();
        }

        private static void SortedListTest(int[] x, int[] x2, int x3)
        {
            var ht = new SortedList();
            Stopwatch watch = new Stopwatch();
            watch.Start();
            foreach (var item in x)
            {
                ht.Add(item, item);
            }
            watch.Stop();
            Console.WriteLine(string.Format("SortedList添加{0}个元素耗时:{1}ms", x.Length, watch.ElapsedMilliseconds));
            watch.Reset();
            watch.Start();
            foreach (var item in x2)
            {
                //Console.WriteLine("value:{0},?{1}",item,ht.ContainsKey(item));
                ht.ContainsValue(item);
            }
            watch.Stop();
            Console.WriteLine(string.Format("SortedList查找在100000个元素中查找随机的{0}个的元素耗时:{1}ms", x2.Length, watch.ElapsedMilliseconds));
            ht.Clear();
        }
        private static void HashtableTest(int[] x, int[] x2, int x3)
        {
            Hashtable ht = new Hashtable();
            Stopwatch watch = new Stopwatch();
            watch.Start();
            foreach (var item in x)
            {
                ht.Add(item, item);
            }
            watch.Stop();
            Console.WriteLine(string.Format("Hashtable添加{0}个元素耗时:{1}ms", x.Length, watch.ElapsedMilliseconds));
            watch.Reset();
            watch.Start();
            foreach (var item in x2)
            {
                //Console.WriteLine("value:{0},?{1}",item,ht.ContainsKey(item));
                //ht.ContainsKey(item);
                ht.ContainsValue(item);
            }
            watch.Stop();
            Console.WriteLine(string.Format("Hashtable查找在100000个元素中查找随机的{0}个的元素耗时:{1}ms", x2.Length, watch.ElapsedMilliseconds));
            ht.Clear();
        }

        private static void DictionaryTest(int[] x, int[] x2, int x3)
        {
            Dictionary<int, int> ht = new Dictionary<int, int>();
            Stopwatch watch = new Stopwatch();
            watch.Start();
            foreach (var item in x)
            {
                ht.Add(item, item);
            }
            watch.Stop();
            Console.WriteLine(string.Format("Dictionary添加{0}个元素耗时:{1}ms", x.Length, watch.ElapsedMilliseconds));
            watch.Reset();
            watch.Start();
            foreach (var item in x2)
            {
                //Console.WriteLine("value:{0},?{1}", item, ht.ContainsKey(item));
                //ht.ContainsKey(item);
                ht.ContainsValue(item);
            }
            watch.Stop();
            Console.WriteLine(string.Format("Dictionary查找在100000个元素中查找随机的{0}个的元素耗时:{1}ms", x2.Length, watch.ElapsedMilliseconds));
            ht.Clear();
        }

        private static void SortedDictionaryTest(int[] x, int[] x2, int x3)
        {
            SortedDictionary<int, int> ht = new SortedDictionary<int, int>();
            Stopwatch watch = new Stopwatch();
            watch.Start();
            foreach (var item in x)
            {
                ht.Add(item, item);
            }
            watch.Stop();
            Console.WriteLine(string.Format("SortedDictionary添加{0}个元素耗时:{1}ms", x.Length, watch.ElapsedMilliseconds));
            watch.Reset();
            watch.Start();
            foreach (var item in x2)
            {
                //Console.WriteLine("value:{0},?{1}", item, ht.ContainsKey(item));
                //ht.ContainsKey(item);
                ht.ContainsValue(item);
            }
            watch.Stop();
            Console.WriteLine(string.Format("SortedDictionary查找在100000个元素中查找随机的{0}个的元素耗时:{1}ms", x2.Length, watch.ElapsedMilliseconds));
            ht.Clear();
        }
    }
}

C# 集合性能比较(代码测试),布布扣,bubuko.com

时间: 2024-10-10 07:08:04

C# 集合性能比较(代码测试)的相关文章

高效能程序员的修炼札记:加强代码测试

前言:代码测试,无疑是编程环节中重要一环,重要到什么程度呢?假如治理雾霾就是编程,如果想把雾霾治理好,最最重要的无非就是减少工业污染,而代码测试就是这样,它能够从根源上就杜绝bug的发生.实战经验告诉我,在编程的过程中,当你顺利的把代码敲完毕了,那么及时的跟上一次代码肉眼扫描,以及通过SVN版本库的对比,或者是和你认可的同事进行代码的检测,当你对重要的代码写一小段测试用例后,你会发现,你已经能够修正了大量的bug,如果按照bug10个量记的话,一遍代码测试能够做到7个bug的消除. 与客户患难与

OpenCV:Mat元素访问方法、性能、代码复杂度以及安全性分析

欢迎转载,尊重原创,所以转载请注明出处: http://blog.csdn.net/bendanban/article/details/30527785 本文讲述了OpenCV中几种访问矩阵元素的方法,在指定平台上给出性能比较,分析每种矩阵元素访问方法的代码复杂度,易用性. 一.预备设置 本文假设你已经正确配置了OpenCV的环境,为方便大家实验,在文中也给出了编译源程序的Makefile,其内容如代码段1所示. 采用如代码段2所示的计时函数,这段代码你可以在我之前的博文中找到,abtic()

20种源代码测试工具

本文推荐并点评了软件开发测试中经常使用的20种源代码测试工具,能够帮助大部分人解决测试问题. AQtime--该产品含有完整的性能和调试工具集,能够收集程序运行时关键的性能信息和内存/资源分配信息,并提交概要报告和详细报告,还提供所有的程序优化处理工具,囊括了自定义过滤器.图形化的调用层次结构一直到源代码浏览等内容 AdaTEST--一款针对于Ada应用程序的覆盖率测试.静态测试和动态测试工具 BoundsChecker--为C++开发者而生的运行时错误检测和调试工具,支持C/C++..Net.

解决java代码测试http协议505错误

代码功能:通过java代码获取网页源代码: 所用工具:Myclipse8.5+tomcat6.0+浏览器 系统环境:windows xp旗舰版火狐浏览器版本: IE浏览器版本: 测试http协议有错误java代码如下. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.

几种提高jQuery性能的代码

1.jQuery对象缓存 如果同一元素被查找多次时,就应该将该jQuery对象缓存起来,不然每次查找都要遍历整个文档. 使用下边的代码做个简单的测试 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.

C# 集合性能 总结

一.引言 本文主要记录的是C#各种集合操作的性能,下面的标记说明描述标记的时间,下面的表格对比各种集合各种操作的时间. 标记说明: O(1) 表示无论集合中有多少项,这个操作需要的时间都不变,例如,ArraryLIst的Add()方法就O(1),无论集合中有多少元素,在列表尾部添加一个新的元素的时间都是相同的. 2. O(n)表示对于集合中的每个元素,需要增加的时间量都是相同的,如果需要重新给集合分 配内存,ArrayList的Add()方法就O(n),改变容量,需要复制列表,复制的时间随元素的

传智Java集合+IO 部分知识测试

  集合+IO 部分 共40道选择题,每题2.5分.多选题有错则全错,全对才满分. 单列集合的顶层接口是(    )b a)     Map b)     Collection c)     List d)     Set ArrayList类的底层数据结构是(    )A a)     数组结构 b)     链表结构 c)     哈希表结构 d)     红黑树结构 LinkedList类的特点是(    )B a)     查询快 b)     增删快 c)     元素不重复 d)  

四则运算2代码测试

思路:每个变量,例如:(打印方式)有0/1两种选择,因此进行代码测试时要每种情况都试一下 前提:本程序每次需要输入的变量依次为:1,题目数量:2,数值范围:3,打印方式(0/1):4,有无乘除运算(0/1):5,加减运算中运算结果有负数(0/1) 测试数据: 第一组:10,10,0,0,0 第二组:10,10,1,0,0 第三组:10,10,0,0,1 第四组:10,10,0,1,0 第五组:10,10,1,1,1 第六组:10,10,1,0,0 第七组:20,20,1,0,1 总结:经过代码测

Eclipse+Java+OpenCV249环境搭建和代码测试

1.首先下载OpenCV2.4.9,下载的时候,选择windows版的.然后安装 2.其实安装的过程就是解压的过程,并没有什么安装向导之类的,安装完成后,我们最关心的是这个目录:opencv\build\java 如下图所示 3,建立项目   JavaOpenCv249 3.导入java包 4.设置项目的native库,即opencv_java246.dll所在的路径 运行下面代码: package com.gao; import org.opencv.core.CvType; import o