Перейти на страницу файла на Викискладе

Файл:Array List LinkedList Queue (C sharp).svg

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Исходный файл(SVG-файл, номинально 1000 × 698 пкс, размер файла: 514 КБ)

Краткое описание

Описание
English: Processing time of double[](System.Array), System.Collections.Generic.List<double>, System.Collections.Generic.LinkedList<double>, System.Collections.Generic.Queue<double> on .NET Framework 4.0 with C#. See also #code.
日本語: .NET Framework 4.0のC#での、double[](System.Array), System.Collections.Generic.List<double>, System.Collections.Generic.LinkedList<double>, System.Collections.Generic.Queue<double>の処理時間の比較。コードも参照。
Дата
Источник Собственная работа
Автор aokomoriuta(青子守歌)

Лицензирование

Я, владелец авторских прав на это произведение, добровольно публикую его на условиях следующих лицензий:
w:ru:Creative Commons
атрибуция распространение на тех же условиях
Этот файл доступен на условиях лицензий Creative Commons Attribution-Share Alike 3.0 Unported, 2.5 Generic, 2.0 Generic и 1.0 Generic.
Вы можете свободно:
  • делиться произведением – копировать, распространять и передавать данное произведение
  • создавать производные – переделывать данное произведение
При соблюдении следующих условий:
  • атрибуция – Вы должны указать авторство, предоставить ссылку на лицензию и указать, внёс ли автор какие-либо изменения. Это можно сделать любым разумным способом, но не создавая впечатление, что лицензиат поддерживает вас или использование вами данного произведения.
  • распространение на тех же условиях – Если вы изменяете, преобразуете или создаёте иное произведение на основе данного, то обязаны использовать лицензию исходного произведения или лицензию, совместимую с исходной.
Creative Commons license
Creative Commons Attribution iconCreative Commons Noncommercial icon
This file is licensed under the Creative Commons Attribution-Noncommercial 3.0 Unported license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must attribute the work in the manner specified by the author or :licensor (but not in any way that suggests that they endorse you or your use of the work).
  • noncommercial – You may not use this work for commercial purposes.
GNU head Разрешается копировать, распространять и/или изменять этот документ в соответствии с условиями GNU Free Documentation License версии 1.2 или более поздней, опубликованной Фондом свободного программного обеспечения, без неизменяемых разделов, без текстов, помещаемых на первой и последней обложке. Копия лицензии включена в раздел, озаглавленный GNU Free Documentation License.
Вы можете выбрать любую из этих лицензий.

code

using System;
using System.Collections.Generic;

namespace LWisteria.List
{
	/// <summary>
	/// Listの比較をするメインクラス
	/// </summary>
	static class ListMain
	{
		/// <summary>
		/// エントリーポイント
		/// </summary>
		/// <returns></returns>
		static int Main()
		{
			// ストップウォッチを生成
			System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();

			// 最大要素数
			int maxN = 1000000;

			Console.WriteLine("#,Array,List,LinkedList,Queue");

			
			// 要素数を2倍ずつに増やしていく
			for(double m = 10; m < maxN; m *= new System.Random().NextDouble()/2 + 1)
			{
				// intにキャスト
				int n = (int)m;

				Console.Write("{0},", n);

				// ストップウォッチ開始
				stopwatch.Start();

				// Listを生成
				double[] array = new double[n];

				// nまで
				for(int i = 0; i < n; i++)
				{
					// √を計算して追加
					array[i] = System.Math.Sqrt(i);
				}

				// 合計値を初期化して、全要素について
				double sumArray = 0;
				foreach(double value in array)
				{
					// 合計する
					sumArray += value;
				}
				// ストップウォッチ停止
				stopwatch.Stop();

				// 結果出力
				Console.Write("{0},", stopwatch.ElapsedTicks);
				stopwatch.Reset();

				/*****************************************************/

				// ストップウォッチ開始
				stopwatch.Start();

				// Listを生成
				List<double> list = new List<double>();

				// nまで
				for(int i = 0; i < n; i++)
				{
					// √を計算して追加
					list.Add(System.Math.Sqrt(i));
				}

				// 合計値を初期化して、全要素について
				double sumList = 0;
				foreach(double value in list)
				{
					// 合計する
					sumList += value;
				}
				// ストップウォッチ停止
				stopwatch.Stop();

				// 結果出力
				Console.Write("{0},", stopwatch.ElapsedTicks);
				stopwatch.Reset();

				/*****************************************************/

				// ストップウォッチ開始
				stopwatch.Start();

				// LinkedListを生成
				LinkedList<double> linkedList = new LinkedList<double>();

				// nまで
				for(int i = 0; i < n; i++)
				{
					// √を計算して追加
					linkedList.AddLast(System.Math.Sqrt(i));
				}

				// 合計値を初期化して、全要素について
				double sumLinkedList = 0;
				foreach(double value in linkedList)
				{
					// 合計する
					sumLinkedList += value;
				}
				// ストップウォッチ停止
				stopwatch.Stop();

				// 結果出力
				Console.Write("{0},", stopwatch.ElapsedTicks);
				stopwatch.Reset();

				/*****************************************************/

				// ストップウォッチ開始
				stopwatch.Start();

				// Queueを生成
				Queue<double> queue = new Queue<double>();

				// nまで
				for(int i = 0; i < n; i++)
				{
					// √を計算して追加
					queue.Enqueue(System.Math.Sqrt(i));
				}

				// 合計値を初期化して、全要素について
				double sumQueue = 0;
				foreach(double value in queue)
				{
					// 合計する
					sumQueue += value;
				}
				// ストップウォッチ停止
				stopwatch.Stop();

				// 結果出力
				Console.Write("{0},", stopwatch.ElapsedTicks);
				stopwatch.Reset();

				/*****************************************************/

				Console.WriteLine("{0}", sumArray == sumList && sumList == sumLinkedList && sumLinkedList == sumQueue);
			}

			// 終了コードを返す
			return System.Environment.ExitCode;
		}
	}
}

[Hide]

Краткие подписи

Добавьте однострочное описание того, что собой представляет этот файл

Элементы, изображённые на этом файле

изображённый объект

image/svg+xml

526 727 байт

698 пиксель

1000 пиксель

История файла

Нажмите на дату/время, чтобы посмотреть файл, который был загружен в тот момент.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий05:28, 24 февраля 2011Миниатюра для версии от 05:28, 24 февраля 20111000 × 698 (514 КБ)青子守歌bug fix
15:10, 23 февраля 2011Миниатюра для версии от 15:10, 23 февраля 2011442 × 306 (121 КБ)青子守歌== {{int:filedesc}} == {{subst:User:青子守歌/own work|Figures| |en = Processing time of double[](System.Array), System.Collections.Generic.List<double>, System.Collections.Generic.LinkedList<double>, System.Collections.Generic.Queue<double>

Нет страниц, использующих этот файл.