|
| ||
DrLekter 14.01.21 - 12:47 | Вроде похожее обсужденгие встречал когда-то, но сейчас не найти.
Наткнулся в типовой на такой момент - проверку на наличие значения в массиве проводят по типу результата: "Если ТипЗнч(МассивСтатусовСоздатьНаОсновании.Найти(Статус)) = Тип("Неопределено") Тогда" Чем это лучше/правильней такого сравнения: "Если МассивСтатусовСоздатьНаОсновании.Найти(Статус) = Неопределено Тогда" ? | ||
ДенисЧ 1 - 14.01.21 - 12:49 | Букв больше, конфигурация становится больше, метрики улучшаются... | ||
Волшебник 2 - 14.01.21 - 12:52 | правильнее сравнивать со значением "Неопределено" | ||
Bigbro 3 - 14.01.21 - 13:00 | может механизм платформы так работает что получить тип значения можно считав грубо говоря одну ячейку памяти.
а для получения значения придется читать это значение целиком и неясно сколько оно будет занимать для массива - может и умереть в процессе чтения. но это только предположение. | ||
Вафель 4 - 14.01.21 - 13:01 | |||
RomanYS 5 - 14.01.21 - 13:05 | (0) Скорее всего тупо скопипастили и заменили
Т.е. было что-то типа: ТипЗнч(Статус) = Тип("ПеречислениеСсылка.Перечисление1") ... ТипЗнч(Статус) = Тип("ПеречислениеСсылка.Перечисление2")
по аналогии сделали для неопределенно. Выглядит не красиво и вряд ли несёт большой смысл | ||
polosov 6 - 14.01.21 - 13:22 | (0) Возможно и вправду это работает быстрее, т.к. 1С оперирует типом variant, который представлен значением и типом. при сравнении значений всегда надо сравнивать и типы. А для Неопределено достаточно сравнить типы. Но вот выигрыш как-то сомнителен. | ||
acces969 7 - 14.01.21 - 13:41 | (6) В спорте центами меряются)
Вопрос вдогонку - замечал в типовых использование "Вычислить()" там, где этого не требуется. Чем интересно обсуловлен такой подход? | ||
VladZ 8 - 14.01.21 - 13:43 | (7) Скорей всего 1С для разработки типовых использует не конфигуратор, а что-то другое. Поэтому иногда и "выскакивают" подобные решения. | ||
Вафель 9 - 14.01.21 - 13:44 | код все равно рукамит пишется | ||
Вафель 10 - 14.01.21 - 13:44 | интересно есть статистический анализ у них? по идее такое должно отлавливаться | ||
aka MIK 11 - 14.01.21 - 13:50 | (0) в сравнении с достаточно тяжелой функцией поиска в массиве оптимизация ничтожна, даже если она и есть | ||
DrLekter 12 - 14.01.21 - 14:09 | (2) "правильнее сравнивать со значением "Неопределено""
- я так всегда и делаю, но, смотрю, квалифицированные разрабы ERP со мной не согласные. Задумался...
По поводу оптимизации - выполняется не в цикле, однократно при открытии документа, массив состоит в лучшем случае из единиц элементов. Как говорится, "люди, которые пишут спс вместо спасибо - куда вы деваете такую прорву сэкономленного времени?" ))) | ||
mikecool 13 - 14.01.21 - 14:16 | (0) так понимаю, что сравнение только с типом Неопределено, с другими типами так не делают?
тогда надо на партнерке спросить - нафейхоа? | ||
DrLekter 14 - 14.01.21 - 14:18 | Судя по коду, это проверка на наличие в массиве определенного значения. | ||
polosov 15 - 14.01.21 - 14:20 | (13) В данном случае, если тебе нужно только подтверждение нахождения Статус в массиве, то можно просто сравнить с типом "Число" | ||
DrLekter 16 - 14.01.21 - 14:21 | Я думаю, разницы сравнения с типом Неопределено и с типом Число особой нет. Я всегда сравниваю со значением Неопределено. | ||
polosov 17 - 14.01.21 - 14:24 | (16) С числом по-идее должно быть сравнение медленнее, т.к. есть числа int и float.
В этих ваших богомерзких буржуйских языках для этого придумали всякие <int> для коллекций, чтобы сказать какой тип тебе нужен. | ||
Bigbro 18 - 15.01.21 - 06:37 | (4) еще раз.
предположим у вас есть структура памяти. в которой первым байтом обозначен тип данных, дальше длина, дальше собственно само значение. в этом случае операция сравнения типов, без чтения самих значений будет быстрой. адекватный разработчик платформы сделал бы так. а вот вычитать 2 значения и сравнить их, при том что у вас потенциально огромный объем данных, под который придется выделить предварительно память ... все правильно сделано в (0). | ||
DrLekter 19 - 15.01.21 - 10:02 | (18) Поиск в массиве дает результат типа "Число" или "Неопределено". Не может там даже теоретически оказаться "огромный объём данных". Да и структуры данных уже получены и существуют. Да, вероятно, одной операцией будет меньше, если платформа действительно сначала сравнивает тип. Но какое будет выиграно время? Нано-, фемтосекунда? На фоне того, сколько времени впустую теряется в бесчисленных цепочках вызовов в БСП, например.
Я бы ещё понял, если бы это в каком-то цикле вызывалось. И это ещё если предположить, что операция извлечения типа совсем ничего не стоит. | ||
GANR 20 - 15.01.21 - 10:27 | (0) напиши в их поддержку и спроси |
|
Список тем форума |