|
С# Средство разработки на платформе .Net |
17.03.2011, 01:08
|
#1
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
List and alias.
Мой первый пост по делу, за долгое время. =)
Перебрался с бейсика на C#. Пишу по малости, скоро игру выложу.
Конкретно вопрос:
Когда писал на бейсике, и требовалось создать множество неких объектов, постоянно изменяющее свой размер, объявлял Type и был доволен.
На C# в аналогичных случаях употребляю List<>.
Я конечно не пишу программу перехвата управления спутниками ВВС США в реальном времени, но интересно, сколько и чего жрет List по сравнению с массивами?
|
(Offline)
|
|
17.03.2011, 02:02
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: List and alias.
Дык сделай замеры, есть хеш таблицы (Dictionary) есть такие списки (ListArray) и т.п.
Сделай замеры, миллисекунды получай: System.Environment.TickCount
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.03.2011, 02:06
|
#3
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: List and alias.
ну вообщемто переживать по поводу памяти в наше время не особо стоит волноватся(ну поянтное дело я не о том чтобы создать 100500 ненужных классов и оставить их, про такую вещь как размер списков и словарей). если особо интересно полистай msdn. также во время исполнентя можешь сотановить и посмотреть Capacity - это размер памяти выделеный для листа листа. Также, если зарание известен размер листа, то лучше иницализировать его спараметром Capacity - это ускорит добавление елементов в будующем(пока эти елементы не вылезут за ганицу) )
ПО поводу скорости доступа к елементам, то тут да, масивы работаеют на порядок быстрее.
Вот кстати пример по поводу выделяемой памяти-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mime;
using System.Text;
namespace ListTest
{
class Program
{
static void Main(string[] args)
{
List<object> objects=new List<object>();
objects.Add(new object());
int capacity=objects.Capacity;
for (int i = 0; i < 15; i++)
{
capacity = objects.Capacity;
int size = objects.Count;
Console.WriteLine("ExistElemets={0} Capacity={1}",size,capacity);
for (int j = 0; j < capacity-size+1; j++)
{
objects.Add(new object());
}
}
Console.ReadKey();
}
}
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.03.2011, 03:42
|
#4
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: List and alias.
Dream, тут скорее вопрос скорости а не памяти.
Например если это сервер, то ему нужно быстро списками орудовать..
|
(Offline)
|
|
17.03.2011, 04:21
|
#5
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: List and alias.
Мне все важно! Спасибо.
З.Ы. Свойство Capacity здорово к месту пришлось. Как-то я его упускал из виду.
|
(Offline)
|
|
17.03.2011, 04:52
|
#6
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: List and alias.
Сообщение от MoKa
Dream, тут скорее вопрос скорости а не памяти.
Например если это сервер, то ему нужно быстро списками орудовать..
|
Ты откуда знаешь в чём там вопрос? К чему твой комментарий?
В своем посте я указал как о памяти так и скорости доступа
|
(Offline)
|
|
17.03.2011, 14:13
|
#7
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: List and alias.
Сообщение от Dream
Ты откуда знаешь в чём там вопрос? К чему твой комментарий?
В своем посте я указал как о памяти так и скорости доступа
|
Это было в основном к этому:
ну вообщемто переживать по поводу памяти в наше время не особо стоит волноватся
|
Скорость перебора элементов, зависит от реализации самих списков. Списки есть разные и для разных задач, поэтому и был вопрос, что лучше или быстрее использовать..
|
(Offline)
|
|
17.03.2011, 14:33
|
#8
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: List and alias.
Перечитай пожалуйста первый пост ещё раз.
Или ты у нас тоже "между строк" читаешь?
|
(Offline)
|
|
17.03.2011, 14:59
|
#9
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: List and alias.
Сообщение от Dream
Перечитай пожалуйста первый пост ещё раз.
Или ты у нас тоже "между строк" читаешь?
|
Да не прочитал всё, ты сказал что массив будет быстрее и т.п.
Только дело стоит в том что списки есть разные, иногда нужен доступ по индексу, а иногда по int номеру, которое назначается другим механизмом и в списке не последовательно и т.п. различия списков.
Тебя что-то задевает тут?
|
(Offline)
|
|
17.03.2011, 15:25
|
#10
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: List and alias.
Ты прикидываешься? Как цель использование влияет на скорость?
|
(Offline)
|
|
17.03.2011, 15:37
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: List and alias.
Сообщение от Dream
Ты прикидываешься? Как цель использование влияет на скорость?
|
Дык, задачи определяют инструменты. Нету универсального варианта, и даже если он будет, то он будет в разных задачах медленнее чем специализированные списки.
Таким образом задача определяет инструментарий, исходя из которых зависит скорость, т.к. они различаются.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:33.
|