В этой среде мы измеряем эффективность в количестве потребляемых Сервисных единиц. Я преобразовать текущий DATETIME в миллисекундах, чтобы проиллюстрировать эту ошибку:Интересная ошибка в APL2 на мэйнфрейме IBM относительно ⊥
0 100 100 100 100 100 1000⊥⎕TS ⍝ this statement consumes around 150 SUs
0 100 100 100 100 100 1000.0⊥⎕TS ⍝ this statement consumes around 5 SUs
Что здесь происходит? Ну, присоединяя .0
к любому из условий в левом аргументе, мы говорим интерпретатору, чтобы он перешел в режим float. Без него он сначала пытается обработать операцию целыми числами, отмечает, что он не работает, а затем повторяет попытку в режиме float.
Тот же трюк может использоваться по правильному аргументу или путем добавления 0.0
или путем умножения на 1.0
.
https://stackoverflow.blog/2011/07/its-ok-to-ask-and-answer-your-own-questions/ – mappo
Я предполагаю, что компилятор особо не оптимизирован - если это не хитрый денежный трюк от IBM ... :-) –
@mappo Я думаю, что часть ответа («Ну, присоединяясь .0 к ...») должна быть поставлена в ответ, чтобы соответствовать формату QA. –