Как сделать красиво на немерли
От: Аноним  
Дата: 06.06.14 07:05
Оценка:
Есть некоторый тип данных пусть будет RRR

это массив и хеш

Если ест обращение к его элементам по индексу то создаеться массив
Если есть метод найти значения (findvalue), то есть хеш

например


def d=RRR();
d.add(1);
d.add(2);
d.add(3);

d.findvalue(1)

тут RRR должен быть хешем

def d=RRR();
d.add("1");
d.add("2");
d.add("3");

d[1];

тут RRR должен быть массивом


def d=RRR();
d.add("1");
d.add("2");
d.add("3");

d.findvalue(1)
d[1];

тут RRR должен быть объединенной структурой массива и хеша
Re: Как сделать красиво на немерли
От: catbert  
Дата: 06.06.14 12:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>тут RRR должен быть объединенной структурой массива и хеша


Ну так и сделайте себе "объединенную структуру массива и хеша".
Re[2]: Как сделать красиво на немерли
От: Аноним  
Дата: 06.06.14 14:08
Оценка:
Здравствуйте, catbert, Вы писали:

C>Здравствуйте, Аноним, Вы писали:


А>>тут RRR должен быть объединенной структурой массива и хеша


C>Ну так и сделайте себе "объединенную структуру массива и хеша".


Плохой вариант.
Медленнее массива если не нужен поиск значения и медленнее хеша если не нужен доступ по индексу.
Re: Как сделать красиво на немерли
От: cvetkov  
Дата: 09.06.14 18:33
Оценка:
а если это чудо будет передано кудато или из метода вернется? тут некислый вывод типов придется делать.

не говоря уж о том что касты всю малину обо... обжуют вобщем.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[2]: Как сделать красиво на немерли
От: Аноним  
Дата: 09.06.14 19:56
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>а если это чудо будет передано кудато или из метода вернется? тут некислый вывод типов придется делать.


C>не говоря уж о том что касты всю малину обо... обжуют вобщем..


Каст это не более чем вызов функции получающий на вход текущий, а возвращающий другой.

Фактически нужно для типа реализовать метод возвращающий все использования его.
Re[3]: Как сделать красиво на немерли
От: cvetkov  
Дата: 10.06.14 03:29
Оценка:
Здравствуйте, <Аноним>, Вы писали:

C>>а если это чудо будет передано кудато или из метода вернется? тут некислый вывод типов придется делать.


C>>не говоря уж о том что касты всю малину обо... обжуют вобщем..


А>Каст это не более чем вызов функции получающий на вход текущий, а возвращающий другой.

Ну не скажи. вот такой сценарий:
def a = RRR(); // 1
d.add(1);
Object b = a;

RRR c = (RRR)b;
c.findvalue(); //2

И как нам в момент 1 понять что там гдето в будущем случится именно 2
Тут два плохих решения:
1) каст создает новый инстанс. это плохо потому что не сохраняет равенство ссылок которое мы ожидаем от каста
2) если есть каст готовитсяя к худшему и использовать реализацию которая может все. это плохо потому что убивает всю идею оптимизации.

А>Фактически нужно для типа реализовать метод возвращающий все использования его.

нет. надо найти все использования инстанса, а не типа.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[4]: Как сделать красиво на немерли
От: Аноним  
Дата: 10.06.14 04:22
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>Здравствуйте, <Аноним>, Вы писали:


C>>>а если это чудо будет передано кудато или из метода вернется? тут некислый вывод типов придется делать.


C>>>не говоря уж о том что касты всю малину обо... обжуют вобщем..


А>>Каст это не более чем вызов функции получающий на вход текущий, а возвращающий другой.

C>Ну не скажи. вот такой сценарий:
C>
C>def a = RRR(); // 1
C>d.add(1);
C>Object b = a;

C>RRR c = (RRR)b;
C>c.findvalue(); //2
C>

C>И как нам в момент 1 понять что там гдето в будущем случится именно 2
C>Тут два плохих решения:
C>1) каст создает новый инстанс. это плохо потому что не сохраняет равенство ссылок которое мы ожидаем от каста
C>2) если есть каст готовитсяя к худшему и использовать реализацию которая может все. это плохо потому что убивает всю идею оптимизации.

А>>Фактически нужно для типа реализовать метод возвращающий все использования его.

C>нет. надо найти все использования инстанса, а не типа.

соглсен, я не правильно выразился
Re[5]: Как сделать красиво на немерли
От: cvetkov  
Дата: 10.06.14 04:26
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>>>Фактически нужно для типа реализовать метод возвращающий все использования его.

C>>нет. надо найти все использования инстанса, а не типа.

А>соглсен, я не правильно выразился

ну а эта задача нерешаемая.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[6]: Как сделать красиво на немерли
От: Аноним  
Дата: 10.06.14 04:30
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>ну а эта задача нерешаемая.


почему?
Re: Как сделать красиво на немерли
От: hardcase Пират http://nemerle.org
Дата: 10.06.14 09:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть некоторый тип данных пусть будет RRR


Что мешает программисту в каждом из сценариев сразу использовать эффективную структуру данных?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Как сделать красиво на немерли
От: Аноним  
Дата: 10.06.14 09:21
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


А>>Есть некоторый тип данных пусть будет RRR


H>Что мешает программисту в каждом из сценариев сразу использовать эффективную структуру данных?


Незнание, как эту структуру будут использовать в дальнейшем. Довольно частая ситуация, если есть чужие обновляемые исходники.
Re[3]: Как сделать красиво на немерли
От: hardcase Пират http://nemerle.org
Дата: 10.06.14 09:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Незнание, как эту структуру будут использовать в дальнейшем. Довольно частая ситуация, если есть чужие обновляемые исходники.


В каком дальнейшем? Приведенные сценарии применимы только в рамках одного метода.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Как сделать красиво на немерли
От: Аноним  
Дата: 10.06.14 09:29
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


А>>Незнание, как эту структуру будут использовать в дальнейшем. Довольно частая ситуация, если есть чужие обновляемые исходники.


H>В каком дальнейшем? Приведенные сценарии применимы только в рамках одного метода.


Ты всегда анализируешь эффективность каждой структуры? Постоянно конвертируешь массив в хеш для быстрого поиска элемента, а потом удаляешь хеш?


После чего возник такой вопрос. У меня исходник.

для массива там добавлен метод findelement/
В тестах на него приходиться 0,01% нагрузки

В моем варианте использования пришлось 80%
Re[5]: Как сделать красиво на немерли
От: hardcase Пират http://nemerle.org
Дата: 10.06.14 11:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ты всегда анализируешь эффективность каждой структуры? Постоянно конвертируешь массив в хеш для быстрого поиска элемента, а потом удаляешь хеш?


Зависит от задачи, но стараюсь выбирать наиболее эффективные структуры данных.


А>для массива там добавлен метод findelement/

А>В тестах на него приходиться 0,01% нагрузки

А>В моем варианте использования пришлось 80%


Неиспользование волшебной макры (читай — использование неэффективной структуры данных) приведет к такому же результату.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: Как сделать красиво на немерли
От: Аноним  
Дата: 10.06.14 13:39
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


А>>Ты всегда анализируешь эффективность каждой структуры? Постоянно конвертируешь массив в хеш для быстрого поиска элемента, а потом удаляешь хеш?


H>Зависит от задачи, но стараюсь выбирать наиболее эффективные структуры данных.



А>>для массива там добавлен метод findelement/

А>>В тестах на него приходиться 0,01% нагрузки

А>>В моем варианте использования пришлось 80%


H>Неиспользование волшебной макры (читай — использование неэффективной структуры данных) приведет к такому же результату.


почему не переложить на компилятор возможность анализировать и выбирать пусть и для простых случаев структуры данных?
Re[7]: Как сделать красиво на немерли
От: hardcase Пират http://nemerle.org
Дата: 10.06.14 14:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>почему не переложить на компилятор возможность анализировать и выбирать пусть и для простых случаев структуры данных?


Смысл? В простых случаях программист в состоянии выбрать между массивом, списком, деревом и хэштаблицей.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[7]: Как сделать красиво на немерли
От: cvetkov  
Дата: 10.06.14 16:28
Оценка:
Здравствуйте, <Аноним>, Вы писали:

C>>ну а эта задача нерешаемая.


А>почему?


так предется data flow построить. а его построить нельзя из-за проблемы останова. в общем случае невозможно даже сказать что программа не зацикливается, а уж анализ проводить можно только приблизительно.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[8]: Как сделать красиво на немерли
От: Аноним  
Дата: 11.06.14 04:18
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Смысл? В простых случаях программист в состоянии выбрать между массивом, списком, деревом и хэштаблицей.


а например между массивом+хештаблица?

в 2 раза больше памяти, но зато константный доступ по индексу и по поиску элемента?

часто код бывает написан уже, а только постфактум можно выяснить, что структура выбрана не верно и код для скорости на первый взгляд не критичен(в 3-4 раза туда сюда не важно)
вообще было бы хорошо иметь в языке возможности для таких вещей.
Re[8]: Как сделать красиво на немерли
От: Аноним  
Дата: 11.06.14 06:34
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>так предется data flow построить. а его построить нельзя из-за проблемы останова. в общем случае невозможно даже сказать что программа не зацикливается, а уж анализ проводить можно только приблизительно.


жадного анализа достаточно, а он не связан с проблемой остонова, если не генерируется новый код.
Re[9]: Как сделать красиво на немерли
От: Аноним  
Дата: 11.06.14 09:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>часто код бывает написан уже, а только постфактум можно выяснить, что структура выбрана не верно и код для скорости на первый взгляд не критичен(в 3-4 раза туда сюда не важно)

А>вообще было бы хорошо иметь в языке возможности для таких вещей.

а еще лучше иметь в рантайме возможность статистического определения и выбора структур и алгоритмов
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.