|
|
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
доброе время суток. циклы. в программах без них никуда. их бывает очень много. часто циклы связаны с массивами. но массивы бывают пустыми. стоит ли проверять на не пустоту массивы, прежде чем по ним бегать? Код: plaintext 1. 2. 3. проверять, то что проверять лучше (быстрее): количество элементов, истинность, другое? или глупости все это и компьютеры с компиляторами на сегодняшний день на столько клевые, что это экономия на спичках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 22:05 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
От языка зависит. Но для большинства императивных заход в выражение for(..) выполняется всегда хотя-бы 1 раз независимо от результата предиката цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:04 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
mayton, даже в случае Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:08 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
Ваш код - безсмысленный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:10 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
maytonОт языка зависит. Но для большинства императивных заход в выражение for(..) выполняется всегда хотя-бы 1 раз независимо от результата предиката цикла. эээ... в C, C++, Pascal, Python, Ruby и Common Lisp для for (i = 1; i < 1; ++i) не выполняется ни разу. C# и Java проверить не могу. Вы о каких языках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:21 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
k0rvinmaytonОт языка зависит. Но для большинства императивных заход в выражение for(..) выполняется всегда хотя-бы 1 раз независимо от результата предиката цикла. эээ... в C, C++, Pascal, Python, Ruby и Common Lisp для for (i = 1; i < 1; ++i) не выполняется ни разу. C# и Java проверить не могу. Вы о каких языках? А почему вы меня ограничиваете? Я что, только константы умею использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:23 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
mayton, человек спрашивает, есть ли смысл писать (псевдокод) Код: plaintext 1. 2. 3. Код: plaintext 1. 2. Вы же говорите, что в тело цикла заход все равно хотя бы 1 раз, но будет. Что вы имеете в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:24 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
Отвечая самому себе и ТС могу сказать следующее: иногда смысл точно есть. Например, некоторый класс может инкапсулировать доступ к базе данных и предоставлять интерфейс коллекции/массива. В таком классе метод проверки наличия хотя бы одного элемента (а-ля isEmpty) может быть реализован намного оптимальнее, нежели return this.length == 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:26 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
an0nymmayton,Что вы имеете в виду? Давай сейчас сидеть и вместе додумывать, что-же имел в виду создатель сабжа, написав: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:29 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
an0nym...некоторый класс может инкапсулировать доступ к базе данных и предоставлять интерфейс коллекции/массива... Слабо то же самое, но в трёх-четырёх словах, но по-русски. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:30 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
mayton А почему вы меня ограничиваете? Я что, только константы умею использовать? чем я Вас ограничиваю и почему только константы? for (i = a; i < b; ++i) для любого a >= b ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:33 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
ShSerge, ленивая выгрузка из базы данных с доступом как к массиву а-ля getRange(0, 100) -> SELECT ... LIMIT 0, 100 или getLength() -> SELECT COUNT(*) ... или isEmpty() -> SELECT 1 ... LIMIT 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:34 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
ShSergean0nym...некоторый класс может инкапсулировать доступ к базе данных и предоставлять интерфейс коллекции/массива... Слабо то же самое, но в трёх-четырёх словах, но по-русски. :) LINQ, короче. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:35 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
Давайте дождёмся ответа автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:36 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
maytonan0nymmayton,Что вы имеете в виду? Давай сейчас сидеть и вместе додумывать, что-же имел в виду создатель сабжа, написав: Код: plaintext 1. 2. 3. Додумывать нечего. Ибо очевидно, что. Могу написать дословно что он имел в виду. Код: plaintext 1. 2. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:36 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
an0nym меня правильно понял. на сколько минимально "сложным" должен (может) быть "интерфейс коллекции/массива", чтобы возникла необходимость реализации более оптимальной проверки? p.s. если я вас правильно понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:38 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
2 anonym Если второй вариант (Perl ? или PHP ?) не вызывает ошибки, то почему-бы и нет. Пускай использует. Но если копнуть глубже, есть такой шаблон. Код: plaintext 1. 2. 3. 4. Попробуй подумать в чём его смысл. Может быть вопрос автора на поверхности кажется глупым, но он порождает массу других направлений и мыслей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 23:48 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
mayton Код: plaintext 1. 2. 3. 4. А теперь объясните, пожалуйста, что значит этот код, конструкция co, переменная m, где определена n определена и скобки <>. Последний мой пример был на PHP, но подобный шаблон Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2010, 00:02 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
i'm_novicean0nym меня правильно понял. на сколько минимально "сложным" должен (может) быть "интерфейс коллекции/массива", чтобы возникла необходимость реализации более оптимальной проверки? p.s. если я вас правильно понял... Если проверка isEmpty основана на getLength() (т. е. банально function isEmpty() { return this.getLength() == 0;}), то разницы от наличия доп. if практически нет. Если проверка isEmpty имеет не связанную с getLength() реализацию, затраты на исполнение getLength() могут быть несравнимо выше, чем isEmpty(). В таком случае if нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2010, 00:05 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
Первый оператор co - это аналог for, с той разницей что порождает параллельные процессы вместо итераций. Угловые скобочки - аналог критической секции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2010, 00:10 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
maytonПервый оператор co - это аналог for, с той разницей что порождает параллельные процессы вместо итераций. Угловые скобочки - аналог критической секции. я, к сожалению, не понимаю вас. скажите, пожалуйста, какую массу направлений и мыслей порождает мой вопрос? на сколько глубоко это может завести? чем это грозит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2010, 00:26 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
Оценка стоимости операций. В параллельном программировании такой пустяк как блокирующее чтение-установка переменной является дорогостоящей операцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2010, 00:29 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
maytonПервый оператор co - это аналог for, с той разницей что порождает параллельные процессы вместо итераций. Угловые скобочки - аналог критической секции. Если я правильно понял, то Код: plaintext 1. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2010, 00:37 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
mayton, если я правильно понял, то вы говорите чисто о синтаксической стороне вопроса (что co [i=0 to -1] может быть рассмотрено как co [i=-1 to 0], что будет ошибкой - в 99% случаев программист этого не ждал), а я скорее о том, почему проверка на пустоту массива может быть намного рациональнее попытки пройтись по нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2010, 00:41 |
|
||
|
"а был ли мальчик?"
|
|||
|---|---|---|---|
|
#18+
Пример я взял из книги Грегори Эндрюса - Основы Многопоточного .... бла-бла и.т.д. Сранно. Я думал вы будете спрашивать о двойной проверке a[i]>m. Но всех почему-то заинтересовал пакетный запуск процессов. Чудеса!! Ладно. Всем - до завтра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2010, 00:45 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36792175&tid=1343514]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
195ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 551ms |

| 0 / 0 |
