170 похожих чатов

Вопрос перфоманса, что лучше использовать IReadOnlyCollection, Array или IReadOnlyList в

принимаемых параметрах приватного метода, к примеру, мне необходим доступ по индексу, тогда если я использую IReadOnlyCollection, то приходится вызывать toArray, но если использую массив, тогда если у меня на руках List, то чтобы передать его в метод тоже нужно вызывать toArray, при этом, наверное, хотелось бы чтобы у похожих методов была похожие параметры, а не где-то массив, а где-то IReadOnlyCollection, в таком случае лучше везде использовать IReadOnlyList? Или лучше, например, кастануть лист к массиву? При этом иммутабельность мне не нужна

9 ответов

13 просмотров

Не могу сказать что лучше, но для доступа по индексу можно использовать ElementAt

Зависит от контекста задачи и метода. Общего ответа быть не может тут.

Vladislav- Автор вопроса
Aleksey Kalduzov
Зависит от контекста задачи и метода. Общего ответ...

хорошо, а например, метод чтобы сформировать объект, который будет возвращать, использует лист, лучше ли в таком случае его и вернуть как IEnumarable или скастовать к массиву? Решарпер советует IEnumerable, но я ведь знаю, что у меня там всегда не lazy коллекция

Vladislav- Автор вопроса
Maksim Zenin
Не могу сказать что лучше, но для доступа по индек...

AVOID using ElementAt() in certain scenarios!!! If you know you're going to look up each element, and you have (or could have) over 500, then just call ToArray(), store it in a reusable array variable, and index it off that way. For example; my code was reading data from of an Excel file. I was using ElementAt() to find the SharedStringItem my Cell was referencing. With 500 or less lines, you probably won't notice the difference. With 16K lines, it was taking 100 seconds.

Vladislav- Автор вопроса
Maksim Zenin
И что?

то, что мне нужен перфоманс, и использовать ElementAt() для итерации не очень,и лучше кастануть к массиву

Vladislav
то, что мне нужен перфоманс, и использовать Elemen...

А типа уже нужен? Уже в него все уперлось? Бенчмарки уже есть?

Vladislav
то, что мне нужен перфоманс, и использовать Elemen...

Ты завёл абстрактный разговор за перформансом без никаких вводных данных и тебе даже в цитате пишут что до 500 абсолютно побоку. Ты либо давай полный набор вводных и умные дядьки закидают тебя умными словами про как лучше, либо разговор ни о чём.

Vladislav- Автор вопроса
Aleksey Kalduzov
А типа уже нужен? Уже в него все уперлось? Бенчмар...

нет, но мне сказали написать максимально эффективно с точки зрения количества операция ( ну и времени их выполнения)

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта