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

Файл:CopyTo and ForEach method and foreach iteration of Dictionary.svg

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

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

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

Описание
English: Processing time of ForEach method (and CopyTo method) and foreach iteration of Dictionary Class in C#, by DELL Vostro 200. This shows that Foreach takes longer than foreach.
日本語: C#のDictionaryクラスで、ForEachメソッド(とCopyToメソッド)を使った場合と、foreachで繰り返しを行なった場合の処理時間(DELL Vostro 200を使用)。 Foreachのほうがforeachより時間がかかっていることがわかる。
Дата
Источник Собственная работа
Автор 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.
Вы можете выбрать любую из этих лицензий.

C# source code

using System.Collections.Generic;
using System;

namespace LWisteria.Foreach
{
	/// <summary>
	/// Foreachの性能比較クラス
	/// </summary>
	static class Foreach
	{
		/// <summary>
		/// エントリポイント
		/// </summary>
		/// <returns>終了コード</returns>
		static int Main()
		{
			// ストップウォッチ
			System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
			
			// データ数
			const int N = 10000000;
			
			// 2倍ずつ計算
			for(int n = 1; n < N; n *= 2)
			{
				// 計算するデータの生成
				Dictionary<int, Sample> testData = new Dictionary<int, Sample>(n);
				for(int i = 0; i < n; i++)
				{
					// 0, 1, 2...に10.5, 11.5, 12.5 ...を格納
					testData.Add(i, new Sample() { Value = n + i });
				}

				// 普通にforeachで
				double sum1 = 0;

				stopwatch.Reset();
				stopwatch.Start();
				foreach(Sample sample in testData.Values)
				{
					sum1 += sample.Value;
				}
				long time1 = stopwatch.ElapsedTicks;

				// 配列にコピーしてから、Array.Foreachメソッド
				double sum2 = 0;

				stopwatch.Reset();
				stopwatch.Start();
				Sample[] samples = new Sample[testData.Count];
				testData.Values.CopyTo(samples, 0);

				Array.ForEach<Sample>(samples, (sample) =>
				{
					sum2 += sample.Value;
				});
				long time2 = stopwatch.ElapsedTicks;

				// 結果の表示
				Console.WriteLine("{0}, {1}, {2}", n, time1, time2);
			}

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

		/// <summary>
		/// サンプルクラス(参照型)
		/// </summary>
		sealed class Sample
		{
			/// <summary>
			/// 値
			/// </summary>
			public double Value { set; get; }
		}
	}
}

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

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

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

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

image/svg+xml

118 704 байт

374 пиксель

500 пиксель

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

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

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий02:47, 7 апреля 2010Миниатюра для версии от 02:47, 7 апреля 2010500 × 374 (116 КБ)青子守歌{{User:青子守歌/own work| |en = Processing time of ForEach method (and CopyTo method) and foreach iteration of Dictionary Class in C#, by [http://supportapj.dell.com/support/topics/topic.aspx/jp/shared/support/jp/product_suppo

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

Метаданные