Отказ от кастинга
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        


12»»

Отказ от кастинга Expand / Collapse
Автор
Сообщение
22.11.2006 16:52
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 02.02.2008 19:48
Сообщ.: 480, Visits: 5 178
Меня всегда раздражала необходимость кастинга при извлечении обьекта из библиотечной коллекции. Обычно в коллекции хранят обьекты одного известного типа, но при извлечении приходится всякий раз этот кастинг делать. Модные нынче дженерики не в счет. Там внутри тот же кастинг делается. Придумано исключительно для удобства программирования, но не для повышения эффективности программы.

Кастинг - отнюдь не самая тяжелая операция, но все же операция (по моим примитивным тестам время извлечения обьектов из коллекции возрастает примерно на 5% ). Возникает ли желание взять, скажем, ArrayList и на его основе сделать к примеру StringArrayList, заточенный под хранение стрингов? Чтобы исключить кастинг. Или это паранойя и маразм? 

Сообщ. #907848
22.11.2006 17:05
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 09.07.2008 2:17
Сообщ.: 1 298, Visits: 12 500
во-первых, про 5% на приведение типов при работе с коллекцией - это ты загнул, по-моему
во-вторых, generics применительно к collections должны работать как типизированные коллекции, нечто похожее на С++ templates, по крайней мере на уровене классов входящих в JDK, правда я не смотрел как это реализовано, но если правильно, то приведение типов в этом случае не требуется

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

С уважением,
Владимир
Сообщ. #907850
22.11.2006 17:25
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 02.02.2008 19:48
Сообщ.: 480, Visits: 5 178
во-первых, про 5% на приведение типов при работе с коллекцией - это ты загнул, по-моему

Я побаловался простеньким тестом и на истину особо не претендую. А что, на самом деле должно быть больше или меньше? В какую сторону загнул? :)


во-вторых, generics применительно к collections должны работать как типизированные коллекции, нечто похожее на С++ templates, по крайней мере на уровене классов входящих в JDK, правда я не смотрел как это реализовано, но если правильно, то приведение типов в этом случае не требуется

Я тоже сам не смотрел, но читал на другом форуме мнение тех, кто смотрел (по их словам).


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

Я всеми четырьмя конечностями за массив, но часто нужна автоматическая расширяемость. Собственно, ArrayList и есть массив, в который добавлено несколько полезных методов. И без Hash.. коллекций тоже не обойтись.

Сообщ. #907853
22.11.2006 22:21
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 09.07.2008 2:17
Сообщ.: 1 298, Visits: 12 500
по-моему должно быть меньше 5%

ты как тест проводил? извлекал String объекты из коллекции с приведением к String и сравнивал результаты с извлечением String объектов из коллекции в той же последовательности, но оставляя их как Object? какую коллекцию использовал?

С уважением,
Владимир
Сообщ. #907866
22.11.2006 23:44
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 02.02.2008 19:48
Сообщ.: 480, Visits: 5 178
да, именно так. Коллекция - ArrayList.
Сообщ. #907868
24.11.2006 19:02
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.03.2008 23:02
Сообщ.: 2 077, Visits: 21 402
ну в принципе можно попробовать Class.forName(String name,boolean initialize,ClassLoader loader)
Но скорей всего это вряд ли поможет отцу русской демократии:))
Сообщ. #907969
24.11.2006 21:03
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 02.02.2008 19:48
Сообщ.: 480, Visits: 5 178
признаться, я ничего не понял
Сообщ. #907973
24.11.2006 21:24
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 10.03.2008 23:02
Сообщ.: 2 077, Visits: 21 402
Чё то я фигню спорол:) похоже
Сообщ. #907974