Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
06.06.2013, 16:33
|
|||
---|---|---|---|
|
|||
ASE 12.5.4 Странная логика разработчиков :). |
|||
#18+
Привет, народ. Ковырялся в sp_helpdeviсe. Наткнулся на странную конструкцию (строки 555 - 569): floor(power(2.0,24)). То есть возводим 2 в степень 24, при этом заботимся о том, чтобы получить результат с плавающей точкой. После чего округляем до целого. Написав power(2,24) вроде бы получим то же самое. Зачем тогда лишняя команда? Теперь сижу и грущу - пытаюсь понять, это я дурак и чего-то недопонимаю, или это разработчики Sybase такие умники? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.06.2013, 16:53
|
|||
---|---|---|---|
|
|||
ASE 12.5.4 Странная логика разработчиков :). |
|||
#18+
P.S. В тех же строках кода используется переменная @offsetdiv, которая в начале процедуры рассчитывается как: select @offsetdiv = power(2,24) Как-то совсем странно... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.06.2013, 18:20
|
|||
---|---|---|---|
ASE 12.5.4 Странная логика разработчиков :). |
|||
#18+
Возвращаемый тип при этом остается decimal, а integer в ASE 32битный который запросто переполнить. Код: sql 1. 2. 3. 4.
в данном случае 128*power(2,24) уже переполнит. попробуйте создать 128 девайсов и выполнить "оптимизированный" запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.06.2013, 09:08
|
|||
---|---|---|---|
|
|||
ASE 12.5.4 Странная логика разработчиков :). |
|||
#18+
blzz, идея, конечно, неплохая. Но, во-первых, power(2,24) переполнения не вызывает (проверено), а во-вторых, переменная @offsetdiv инициализируется именно как power(2,24) (смотри второй пост). Так что код вполне мог выглядеть так: low = (((d.low / @offsetdiv) & 255) * @offsetdiv) + vpn_low, high = (((d.high / @offsetdiv) & 255) * @offsetdiv) + vpn_high ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=55&mobile=1&tid=2009960]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
143ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 248ms |
total: | 489ms |
0 / 0 |