Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
У кого нибудь есть утилита для поиска сабжа? Лично часто забываю "ньючить" переменные. Кто то автоматизировал процесс поиска таких "забытых" переменных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 15:26 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Небыло надобности... :) ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 16:03 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Почитайте про procedure block Если Вы используете procedure block, то в методах классов не нужно делать New переменных и их потом Kill. Cache' это делает сама! Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 16:53 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
VadimF Почитайте про procedure block Если Вы используете procedure block, то в методах классов не нужно делать New переменных и их потом Kill. Cache' это делает сама! Вадим Naming Conventions A process-private global name takes one of the following forms: ^||name ^|"^"|name ^["^"]name ^["^",""]name These four prefix forms are equivalent, and all four refer to the same process-private global. The first form (^||name) is the most common, and the one recommended for new code. The second, third, and fourth forms are provided for compatibility with existing code that defines globals. They allow you to specify a variable that determines whether to define name as a process-private global or a standard global. This is shown in the following example: SET x=1 // toggle storage type IF x=1 { SET a="^" // for a process-private global } ELSE { SET a="" // for a standard global } SET ^|a|name="a value" Господа программисты Помогите пожалуйста понять как пример соотносится с определением ^||name - это приватная глобаль или стандарная ? Спасибо ! ================ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 23:40 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
^||name - приватная глобаль ^name (или ^|""|name) - обычная. В приведенном примере если x'=1, будет выполнен set в ^|""|name - это не то же самое, что ^||name. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 01:15 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Когда не было procedureblock(в каше 4) или когда его нельзя применять, делали запуск программы из терминала и смотрели, что из переменных от нее осталось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2007, 07:57 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
С помощью ZBreak можно установить условный breakpoint при изменении значения переменной - помогает в поиске изменения пропущенной в new переменной. В отладчике Serenji также есть такая возможность, и конечно, в нем удобнее работать чем в отладчике в командной строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2007, 23:01 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Кстати, что мешает использовать синтаксис ? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 10:19 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Кстати, что мешает использовать синтаксис ? Код: plaintext Ну да, очень интересное предложение. Мало там своих внутренних New, да еще и в Xecute. А потом удивляемся на глючные, жрущие память и тормозящие программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:20 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Вот насчет глючные - это как раз если вы забудете с списке new перечислить нужную переменную Вы расход памяти будете уменьшать повторным использованием переменных? Да, программисты M и вправду суровы А затыка по скорости по моим наблюдениям в каше все-таки при работе с диском. А если там в локальной памяти болтаются мегабайты локальных переменных, то не лучше ли их поместить во временный глобал? кстати есть данные по затратам времени на new? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 06:17 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Вот насчет глючные - это как раз если вы забудете с списке new перечислить нужную переменную Вот как раз это мне делать ни к чему. Я не гоняю по кругу одни и те же имена. Блок А.Н. Вы расход памяти будете уменьшать повторным использованием переменных? Да, программисты M и вправду суровы Можно подумать, что мы говорим о Васике. Нет, я просто оптимально их планирую. Блок А.Н. А затыка по скорости по моим наблюдениям в каше все-таки при работе с диском. "Затыка по скорости" в каше при работе с последовательным файлом. С БД она работает не хуже других. А что обращение к памяти быстрее обращения к диску - это известно слишком давно. Блок А.Н. А если там в локальной памяти болтаются мегабайты локальных переменных, то не лучше ли их поместить во временный глобал? И какой же выигрыш это даст? Создание нелепой структуры плюс бессмысленное использование глобального алгоритма только для того, чтобы это все само потерлось? Несерьезно. Блок А.Н. кстати есть данные по затратам времени на new? Их не трудно прикинуть. Особенно на NEW () и полный NEW, которые тащат за собой копирование таблицы локальных переменных и ее последующее восстановление. Особенно замечательно это выглядит с большими локальными массивами или большим количеством переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 07:29 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
авторВот как раз это мне делать ни к чему. Я не гоняю по кругу одни и те же имена. Это как?! 8-| У вас переменные называются SpecialVarIForRoutine1,SpecialVarSumForRoutine2? я например видел, что из-за описки в написании имени переменной в списке new переменная перетирала переменную на два вызова выше. я не говорил, что каше работает с базой хуже, чем другое субд, я говорю, не надо пытаться сэкономить на спичках. Тем более это чревато. при большом числе локальных переменных помещение их во временные глобалы дает выигрыш по скорости, причем заметный. Глобальный алгоритм в каше точно такой же, как и локальный, добавляется только знак ^. Переменные типа i можно в глобал не запихивать, а вот массивы - желательно. Кстати, отслеживать работу программы проще. авторИх не трудно прикинуть. их не так трудно и посчитать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Результаты %SYS.MONLBL Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. использование безагрументного new в контексте 10000 переменных в два раза медленнее, чем для одной переменной. Ужос! Вот из-за чего оказывается все тормозит Cache for Windows (Intel) 5.2 (Build 329) Thu Jun 15 2006 16:40:08 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 08:16 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Да, программисты M и вправду суровы Так все же начиналось с того, что на каждого пользователя отводилось 10 КБ памяти на переменные Локальные переменые в основном используются для параметров циклов, "флажков" и еще так, по-мелочи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 08:25 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov Блок А.Н. А если там в локальной памяти болтаются мегабайты локальных переменных, то не лучше ли их поместить во временный глобал? И какой же выигрыш это даст? Создание нелепой структуры плюс бессмысленное использование глобального алгоритма только для того, чтобы это все само потерлось? Несерьезно. Есть подозрение, что разработчики движка БД меньше внимания уделяют эффективности работы с локальными переменными, нежели с глобальными. Если в программе обрабатывается большой массив, то вариант с использованием глобального массива работает быстрее, легко проверяется. Поэтому совет сделать временные переменные (прежде всего массивы конечно) глобальными не такой уж и глупый :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 08:49 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
LittleCat Sergei Obrastsov Блок А.Н. А если там в локальной памяти болтаются мегабайты локальных переменных, то не лучше ли их поместить во временный глобал? И какой же выигрыш это даст? Создание нелепой структуры плюс бессмысленное использование глобального алгоритма только для того, чтобы это все само потерлось? Несерьезно. Есть подозрение, что разработчики движка БД меньше внимания уделяют эффективности работы с локальными переменными, нежели с глобальными. Если в программе обрабатывается большой массив, то вариант с использованием глобального массива работает быстрее, легко проверяется. Поэтому совет сделать временные переменные (прежде всего массивы конечно) глобальными не такой уж и глупый :-) А это смотря в каком контексте. Ежели памяти, кхгм, много, то глобальный массив обрабатывается легче локального. НО... он с милой легкостью оттуда же и вытирается, если он действительно большой. Опять же, локальный массив обрабатывается в памяти крайне медленновато, что наводит на странные размышления. Но, по счастью, самих неиндексированных локальных переменных это не касается. И, как правильно намекнул предыдущий оратор, нефиг их использовать для хранения данных. Насчет быстрее - я усомнюсь. Одно чтение и три чтения, даже из памяти, это разные вещи. Если мы конечно сравниваем неиндексированную переменную с глобалем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 10:59 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. авторВот как раз это мне делать ни к чему. Я не гоняю по кругу одни и те же имена. Это как?! 8-| У вас переменные называются SpecialVarIForRoutine1,SpecialVarSumForRoutine2? По себе судите? :) Нет, не так. Блок А.Н. я например видел, что из-за описки в написании имени переменной в списке new переменная перетирала переменную на два вызова выше. А нечего с ним играться. Блок А.Н. я не говорил, что каше работает с базой хуже, чем другое субд, я говорю, не надо пытаться сэкономить на спичках. Тем более это чревато. Это не экономия, тем более "на спичках", это просто использование "родного контекста" языка. Блок А.Н. при большом числе локальных переменных помещение их во временные глобалы дает выигрыш по скорости, причем заметный. Глобальный алгоритм в каше точно такой же, как и локальный, добавляется только знак ^. Переменные типа i можно в глобал не запихивать, а вот массивы - желательно. Кстати, отслеживать работу программы проще. Вот опять. Если под "глобальным алгоритмом" понимать нотацию в духе var(i1,i2,in) , то да, такой же. Если же, что более правильно, "механизм поиска данных", то все начинает выглядеть несколько по-другому. Поскольку для локальных переменных - это поиск в одной таблице (в памяти, ага), а для глобальных - в блоках, причем МИНИМУМ в 3-х. Впрочем, есть одно НО. Похоже для индексированной локальной переменной поиск ведется последовательно. И явно не настолько оптимально, как это было сделано в адекватных реализациях M на PC. Блок А.Н. авторИх не трудно прикинуть. их не так трудно и посчитать [...] использование безагрументного new в контексте 10000 переменных в два раза медленнее, чем для одной переменной. Ужос! Вот из-за чего оказывается все тормозит Во-первых, даже в контексте 100 переменных разница оказывается МИНИМУМ в полтора-два раза. Во-вторых, я бы посоветовал писать в переменные данные адекватные, то есть подлиннее. В-третьих, при использовании локального массива разница увеличивается до 4 раз. Ну и, в-четвертых, вспоминаем о насущном использовании этой программы. Если она будет вызываться раз в неделю, то нечего и заморачиваться оптимизированием. Ну а если нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:24 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
авторПо себе судите? :) Нет, не так. Нет, почему же. Я пытаюсь интерпретировать ваше автор Я не гоняю по кругу одни и те же имена. Сам я как человек с ограниченной фантазией использую во всех программах переменные i,j,sum,sum1... :'-( авторА нечего с ним играться. С чем? Кто здесь?! программы не мои были и там использовали как раз списочный NEW Насчет быстродействия: команда New вызывается один раз, в программе же десятки-сотни команд, которые еще могут быть организованы в циклы. Так что экономия на команде new дает оочень маленкький выигрыш. Гораздо больше выигрышь даст оптимизация алгоритма. Согласен, в программах типа Код: plaintext 1. Но в целом безагрументный new очень даже не затратен, а для больших программ, где как раз и опасно ошибиться в списке new - и вовсе незаметен. Мне непонятно, с чем вы спорите? Если вы уверены в том, что это не так, докажите примерно тем же способом, что и я. На слово не верю! ;-) PS. А вот некоторые через объекты работают - вот там все-таки заметнее падение скорости. И ничего... Не всегда скорость главный критерий. Я не призываю писать похабные программы, которые написаны по принципу - ну работает же, чего тебе еще надо? Но лучшее - враг хорошего, и оптимизируя оператор, который за программу выполняется один раз, можно не заметить гораздо большие промахи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 16:34 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. авторПо себе судите? :) Нет, не так. Нет, почему же. Я пытаюсь интерпретировать ваше автор Я не гоняю по кругу одни и те же имена. Сам я как человек с ограниченной фантазией использую во всех программах переменные i,j,sum,sum1... Не надо выдергивать фразы из контекста. Речь шла о "переиспользовании" переменных. Иначе нафига бы понадобился New. Для красоты? Блок А.Н. Насчет быстродействия: команда New вызывается один раз, в программе же десятки-сотни команд, которые еще могут быть организованы в циклы. Так что экономия на команде new дает оочень маленкький выигрыш. Гораздо больше выигрышь даст оптимизация алгоритма. А ведь я об этом уже писал. Конечно не стоит заморачиваться с программой, которая вызывается раз в сутки. Но ведь мы о ней и не говорим, правда ведь? :) Блок А.Н. Но в целом безагрументный new очень даже не затратен, а для больших программ, где как раз и опасно ошибиться в списке new - и вовсе незаметен. Мне непонятно, с чем вы спорите? С политикой "очень даже не затратен". Мне конечно пофигу, это ваши программы и ваши пользователи. Блок А.Н. Если вы уверены в том, что это не так, докажите примерно тем же способом, что и я. На слово не верю! ;-) А тут и не надо ничего доказывать. Вы сами обнаружили разницу в 2 раза. Вам этого мало? Тогда нам не о чем говорить. Блок А.Н. А вот некоторые через объекты работают - вот там все-таки заметнее падение скорости. И ничего... Не всегда скорость главный критерий. А что же есть "главный критерий"? Если мы конечно не пишем программы по принципу "главное чтобы правильно, а там хоть сутки пусть работает". Особенно, если мы говорим о веб-интерфейсах и прочих запросных делах. Блок А.Н. Но лучшее - враг хорошего, и оптимизируя оператор, который за программу выполняется один раз, можно не заметить гораздо большие промахи. Мы говорим об операторе, который мало того, что скрывает логику, но еще и тормозит программу. Похоже, что вы не сталкивались с программами, критичными по времени выполнения. Тогда вопрос снимается, что толку впустую болтать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 02:08 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
автор нафига бы понадобился New Я не понимаю цели вопроса. Вы ведь вроде знаете, для чего используется оператор new? Или вы считаете, что я не понимаю? автор Вы сами обнаружили разницу в 2 раза Да, разницу, эквивалентную еще одному дополнительному оператору сложения. Разницу, равную 2 секундам на миллион вызовов. У вас есть программы, которые вызываются 30 миллионов раз в день? Тогда суммарная экономия на new будет равна 1 минуте, да и то меньше, потому что тест я делал далеко не на самой мощной машине. Тогда конечно, есть смысл экономить на каждом операторе. Но я сильно сомневаюсь в этом. авторМы говорим об операторе, который мало того, что скрывает логику, но еще и тормозит программу. Какой страшный оператор! Какую логику он скрывает? Похоже, что вы не сталкивались с программами, критичными по времени выполнения. на одну двухмиллионную секунды?! Нет, не сталкивался. Минуты, секунды, десятые доли секунд - да. Но миллионные доли секунд? Даже если у вас действительно такой случай, то 1.вряд ли он типичен для разработчиков СУБД 2.вы не пишете программы из десятков и сотен строк со сложной логикой, а я говорю как раз о таком случае. авторОсобенно, если мы говорим о веб-интерфейсах У вас веб интерфейсы = системы управления ракетными комплексами? Для веб как раз миллионные доли секунды не значат ничего. Гораздо больше времени тратится на передачу страницы каше->веб сервер->браузер->построение интерфейса в браузере. авторА что же есть "главный критерий"? У всех наверно по разному, могу предположить один из вариантов 1.Правильность работы программы - неправильная программа хуже, чем отсутсвие любой программы 2.Срок выполнения - какое-то время ваша мегаоптимальная программа заказчику возможно будет уже не нужна, как и вы сами. 3.Оптимальность работы программы - ресурсоемкость при выполнении. авторвопрос снимается, что толку впустую болтать. да, пожалуй. Аргументы пошли по кругу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 06:34 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. автор Вы сами обнаружили разницу в 2 раза Да, разницу, эквивалентную еще одному дополнительному оператору сложения. Разницу, равную 2 секундам на миллион вызовов. У вас есть программы, которые вызываются 30 миллионов раз в день? Тогда суммарная экономия на new будет равна 1 минуте, да и то меньше, потому что тест я делал далеко не на самой мощной машине. Тогда конечно, есть смысл экономить на каждом операторе. Но я сильно сомневаюсь в этом. Ну что же, мой вариант: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Как вы, надеюсь, заметили, переменных у нас создается только 10 плюс 5 своих, в n2 New на одну переменную, внутренняя операция в процедурах адекватная. И прогон будет всего один. Погоняем? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Вот только не надо, пожалуйста, меня укорять "суммарной экономией в 2 секунды" и прочей лабудой. New сейчас модно совать куда угодно, это уже стало неким неофициальным стандартом оформления процедуры. Ну а процедуры вызываются куда чаще, чем программы. Скажем, некоторые процедуры у меня вызываются в среднем 100,000-150,000 раз в сутки. Это конечно, не миллионы, но все же. А разница "в разы" меня совсем не устраивает. Что касается дальнейших экспериментов, то я не стал публиковать кучу результатов. Хотя при увеличении числа переменных и использовании локальных массивов картина менятся в худшую сторону. Доходит до 13-14 раз. Блок А.Н. автор Мы говорим об операторе, который мало того, что скрывает логику, но еще и тормозит программу. Какой страшный оператор! Какую логику он скрывает? Не стоит упражняться в сарказме. New - оператор неявной логики, выражается она в подмене значения конкретной переменной, происходящей при возврате из процедуры, в которой использовался New на ней. Вы видите где-то в этом процессе возврата явный Set? Я не вижу. Сами же упоминали пропуск переменной в списке New. Вот где оно и играет. Блок А.Н. Похоже, что вы не сталкивались с программами, критичными по времени выполнения. на одну двухмиллионную секунды?! Нет, не сталкивался. Минуты, секунды, десятые доли секунд - да. Но миллионные доли секунд? Даже если у вас действительно такой случай, то 1.вряд ли он типичен для разработчиков СУБД 2.вы не пишете программы из десятков и сотен строк со сложной логикой, а я говорю как раз о таком случае. Похоже, вы как-то слабо себе представляете то, о чем мы говорим. "Миллионные доли секунд" - обработка одной записи в БД (я утрирую конечно). Представьте, что вы вызываете при этом процедуру, в которой стоит ваш обожаемый New... и вот, одна миллионная доля секунды уже превращается в 7 миллионных. Вам трудно представить себе БД из миллиона записей? Сочувствую. А у меня их уже 152. И не надо мне говорить про сложную логику, ладно? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 03:12 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Sergei Obrastsov >> Вам трудно представить себе БД из миллиона записей? Сочувствую. А у меня их уже 152. И не надо мне говорить про сложную логику, ладно? :) Там не один миллион и не два ;) У них этих миллионов вполне достаточно. ЗЫ: безаргументный new зло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 07:28 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Я рад, что вы перешли к более аргументированным способам доказательства Проверяю ваш вариант один в один. Результат предоствляю интерпретировать вам Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. То же, но со включенным монитором Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. При использовании большего числа переменных разница увеличивается до 10 раз, на самом деле. Что доказывает, две вещи 1.безаргументный new неоправданно использовать в программах из двух строчек. А это я не отрицал, почитайте мои посты 2.нехорошо держать в локальной памяти большие объемя данных. Вы с этим будете спорить? Они ведь не только на new влияют. авторВам трудно представить себе БД из миллиона записей? Сочувствую. А у меня их уже 152 Несколько терабайт данных? И вы каждую запись обрабаываете отдельной процедурой? Да нет, не мне нужно сочуствовать :-) Что за система то и на чем она крутится, если не секрет (это без подколов, мне просто интересно)? Кстати, я говорил о сложности обработки, а не о объеме данных. Для сверхбольшого объема данных и простой обработки безаргументный new не оправдан, это я говорю уже в который раз в этой теме. автор New - оператор неявной логики Не более неявной, чем остальные. Нужно просто понимать, что для чего используется. А от неявности здесь не уйти - мы не на ассемблере. w "10 Лен"+"20 Вась" Вот вам пример гораздо более неявной операции авторстоит ваш обожаемый New Как в том анекдоте: "Вась, ты помидоры любишь? Есть люблю. А так - нет" Бывают разные случаи, иногда один подход более оправдан, иногда другой. Вы с этим спорить будете? Кстати, успокою вас, большую часть времени из работы с каше я занимаюсь поиском ошибок, среди который были и ошибки в списке new. Если же пишу программы, то new там либо вообще не используется (нет необходимости), либо используется по минимуму. И только при правке чужих достаточно больших программ, где можно запросто поломать мозг во время поиcка ошибки, при подозрение на конфликт переменных часто проще написать n (x1,x2,x2) В пятерке же проще использовать procedure block и приватные переменные, так что по сути дела весь этот спор не очень актуален. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 08:45 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Блок А.Н. Код: plaintext 1. 2. 3. Ну что ж, значит "проблема первого DO" существует не только у меня. Большая просьба сдублировать строку, где "d n1" и повторить попытку. Для чистоты эксперимента, так сказать. Блок А.Н. При использовании большего числа переменных разница увеличивается до 10 раз, на самом деле. Что доказывает, две вещи 1.безаргументный new неоправданно использовать в программах из двух строчек. А это я не отрицал, почитайте мои посты 2.нехорошо держать в локальной памяти большие объемя данных. Вы с этим будете спорить? Они ведь не только на new влияют. Странно, а ведь вроде все очевидно было. Переменных всего 15, где вы там нашли "большие объемы данных"? И причем тут "программы из двух строк", если речь идет о многократных вызовах? Блок А.Н. авторВам трудно представить себе БД из миллиона записей? Сочувствую. А у меня их уже 152 Несколько терабайт данных? И вы каждую запись обрабаываете отдельной процедурой? Да нет, не мне нужно сочуствовать :-) Нет, всего 26Gb, с учетом кучи индексов. А что, вы предлагаете другой вариант? Обрабатывать сразу все? :) Блок А.Н. Что за система то и на чем она крутится, если не секрет (это без подколов, мне просто интересно)? Ничего секретного, аналитика данных о телефонных переговорах. Cache 5.0.11, Windows 2k Server Блок А.Н. автор New - оператор неявной логики Не более неявной, чем остальные. Нужно просто понимать, что для чего используется. А от неявности здесь не уйти - мы не на ассемблере. w "10 Лен"+"20 Вась" Вот вам пример гораздо более неявной операции Нет, операция здесь явная. Все на виду, правила интерпретации строки в число известны. Не более "неявная" чем c+2e-5 . В случае с New все по-другому. Ни результат, ни операция не только не "явны", но и не видны в тексте программы вообще. Блок А.Н. при подозрение на конфликт переменных часто проще написать n (x1,x2,x2) Действительно. Чего там париться-то. :) Блок А.Н. В пятерке же проще использовать procedure block и приватные переменные, так что по сути дела весь этот спор не очень актуален. Я бы конечно мог сказать, что это еще хуже, чем New, но уж промолчу. Действительно, все мои придирки неактуальны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 11:44 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Почему кстати первый раз вызов дольше? Это устойчивый результат. автораналитика данных о телефонных переговорах. Можно подробнее, а то есть знакомые люди, которые ищут что-то подобное авторЯ бы конечно мог сказать, что это еще хуже, чем New, но уж промолчу. Что же может быть хуже new? Вы прямо интригуете :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 16:06 |
|
||
|
переменные пропущенные в команде New
|
|||
|---|---|---|---|
|
#18+
Декабристы-таки разбудили Герцена :) Ясен пень, первое DO имеет право выполняться дольше: отводится память под переменные, может быть под фрэймы стека и т.д. Предлагаю свой вариант теста. Пусть переменных будет не одна, а несколько. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 16:45 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=34642731&tid=1559291]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 350ms |

| 0 / 0 |
