| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > указатели на переменные |
| Автор: sergejzr 29.9.2004, 01:57 | ||
| Хочу изменить переменную MyVar. Необходимо сделать это так:
После этого MyVar должна принять изменённое значение. Как это ещё можно сделать не прибегая к обьектам? |
| Автор: Gregof 29.9.2004, 07:56 | ||
| Нет без объектов этого сделать нельзя. А зачем так? Чем плох подобный вариант:
|
| Автор: sergejzr 29.9.2004, 11:36 |
| Надо бы несколько локалных переменных в функции пересадить. Около 30. и делать это несколько раз в разных местах функции... |
| Автор: Sardar 29.9.2004, 21:19 |
| Примитивы всегда передаются по значению, обьекты по ссылке. Почему нельзя использовать обьекты? Смахивает на изврат... |
| Автор: sergejzr 29.9.2004, 21:25 |
| Да, просто не хотел в цикле использовать вызовы аттрибутов обьекта. ведь Object.value это тоже самое, что Object[value]. А там опять хеши итд. тормоза короче Вот я иинициализирую локальную и с ней работаю. А если таких локальных 30? каждый раз надо инитиализировать... вот и хотел сделать в функции. Вроде как не совсем изврат Я уже решил проблему совсем другим подходом |
| Автор: Sardar 29.9.2004, 22:40 | ||
Ну тогда приоткрою занавесу тайны
Видим что все локальные переменные являются свойствами обьекта window. А хеш таблицы ну очень быстры для поиска, потому то их и юзают |
| Автор: sergejzr 29.9.2004, 22:54 | ||||
Это да, но зачем мне искать то, что у меня уже есть? Ну и потом, если юзать обьекты - 2 раза перессылаемся
Но дело не в том, что это правильно/неправильно. Просто быстрее. Даже в Си если мы опустим указатели, прога ускоряется. А в яваскрипте это намного ярче выражено. Во время обработки события мыши например мне без разницы это время. Ведь если оно произойдёт, значит юзер сам этого захотел. Но если там цикл автоматом обрабатывается, то каждый такой ненужный переход стоит ресурсов. С мира по нитке, а в итоге ускорение происходит... А то, что переменные по умолчанию глобальные, стоило мне сегодня целого дня Оказалось, что пара переменных не была задекларирована с var и пересаживалась при переставке языка |
| Автор: Aliance 29.9.2004, 23:00 | ||
Мдя...использование хэш-таблиц наоборот УВЕЛИЧИВАЕТ скорость... |
| Автор: Sardar 29.9.2004, 23:13 | ||||
И какими наблюдениями ты пришел к этому выводу?
Поменяй оба участка кода местами и увидишь, что всегда тормозит последний - ему меньше памяти достается Уменьши количество создаваемых переменных и ты увидишь, что оба цикла выполняются с одинаковым количеством времени. Другое дело что у тебя никогда не будет более 1000 переменых в одном скрипте Вывод: подобная оптимизация - ловля блох Надо оптимизировать алгоритм. Например иногда народ создает массив элементов, а потом ищет по нему последовательным поиском. Быстрее будет хештаблица(обьект). |
| Автор: sergejzr 29.9.2004, 23:15 | ||||||||||
Значит ты удтверждаешь, что код
Медленней, чем
Потому что хэш увеличивает скорость? Может я изначально неправильно вопрос поставил? Или мы друг друга не поняли Добавлено @ 23:23
Я и не говорю, что это нам много даст, но почему бы не оптимировать? Я просто иногда не могу уснуть зная, что ещё микросекунду мона выжать Добавлено @ 23:24
я мысленно перевожу в Си, И примерно представляю, что кроется за каждым вызовом хэш функции |
| Автор: Sardar 29.9.2004, 23:29 | ||
Утверждений не было Во всех скриптовых языках с динамическими типами ипользуют хеш таблицы для хранения переменных. Т.е. test="bla" и test.bla="bla" это все лежит в хештаблицах. Xеш таблица очень быстра когда не заполненна, а переменных у тебя не больше пары десятков, так что даже простенькую хешь таблицу ты не загрузишь. Впрочем это дело вкуса... |
| Автор: sergejzr 29.9.2004, 23:35 | ||
нет, я Aliance имел в виду |
| Автор: <Spawn> 30.9.2004, 11:51 | ||||||
Имеется ввиду, что хеш-таблицы работают быстрее чем:
Так как не требуется последовательного перебора данных.
Вот этого делать я бы не советовал: итерпретируемый и компилируемый код это несколько разные вещи. |
| Автор: sergejzr 30.9.2004, 13:35 | ||
Естественно разные, но когда я програмлю на Си, я тоже стараюсь операции на асме представить. Так как всё в конечном к тому сводится. И не надо говорить, что это неправильно Если скорость очень важна, то это единственный метод (при наличии оптимального алгоритма конечно). |
| Автор: sergejzr 30.9.2004, 15:29 | ||||
В таком случае, что ты имел в виду этим предложением касательно моего вопроса?
Ладно, Sardar ответил на мой вопрос Тему мона закрывать |