The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск MirageOS 3.5, платформы для запуска приложений поверх..., opennews (ok), 08-Мрт-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


28. "Выпуск MirageOS 3.5, платформы для запуска приложений поверх..."  +/
Сообщение от Аноним (25), 09-Мрт-19, 14:18 
MLton для оптимизации выполняет unboxing, в аналогичных местах OCaml будет проверять младший бит, что бы различить значения и указатели. А за счёт чего "делать все вычисления "справа налево" может дать прирост скорости при выполнении?
Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

34. "Выпуск MirageOS 3.5, платформы для запуска приложений поверх..."  +1 +/
Сообщение от Vkni (ok), 09-Мрт-19, 21:05 
> А за счёт чего "делать все вычисления "справа налево" может дать прирост скорости при выполнении?

Чтобы выражение (f a b c d), которое обязано быть равным ((((f a) b) c) d), можно было заменять на прямой вызов функции f с вычисленными параметрами a b c d. Это изложено в книжке https://xavierleroy.org/bibrefs/Leroy-ZINC.html (ссылка local copy), на странице 14.

Они ребята последовательные, поэтому это вычисление справа налево у них везде - я проверял. Делается структура, массив, кортеж, что угодно - везде справа налево. Ну кроме блока последовательных процедур, конечно.

Ответить | Правка | Наверх | Cообщить модератору

41. "Выпуск MirageOS 3.5, платформы для запуска приложений поверх..."  +/
Сообщение от Аноним (25), 10-Мрт-19, 14:12 
Благодарю. Однако, там же сказано (со ссылкой на Драгонбук), что преимущество может дать неопределённый порядок вычисления аргументов, принятый в C.

In Objective CAML, the order of evaluation of arguments is not specified. As it happens, today all implementations of Objective CAML evaluate arguments from left to right. All the same, making use of this implementation feature could turn out to be dangerous if future versions of the language modify the implementation.
http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora029....

Ответить | Правка | Наверх | Cообщить модератору

43. "Выпуск MirageOS 3.5, платформы для запуска приложений поверх..."  +/
Сообщение от Vkni (ok), 10-Мрт-19, 14:47 
Ну там лажа написана - надо поменять. Простейшая проверка показывает, что right to left:

# let f x y = (x, y);;
val f : 'a -> 'b -> 'a * 'b = <fun>
# f (print_string "Left") (print_string "Right");;
RightLeft- : unit * unit = ((), ())

Понятно, что чем больше у компилятора возможностей, тем больше может быть степень оптимизации. Но сейчас всё согласовано - right to left.

Ответить | Правка | Наверх | Cообщить модератору

44. "Выпуск MirageOS 3.5, платформы для запуска приложений поверх..."  +/
Сообщение от Аноним (25), 10-Мрт-19, 16:23 
Если там перепутали порядок вычисления аргументов в существующих имплементациях, это одно. Другое дело, что кроме того там написано "порядок не определён; так получилось, что аргументы вычисляются так-то, но рассчитывать на эту особенность опасно, т.к. в будущем может измениться".
Ответить | Правка | Наверх | Cообщить модератору

45. "Выпуск MirageOS 3.5, платформы для запуска приложений поверх..."  +/
Сообщение от Vkni (ok), 10-Мрт-19, 19:26 
> но рассчитывать на эту особенность опасно, т.к. в будущем может измениться".

Ну я бы не стал рассчитывать на такие тонкости, с учётом тех серьёзных изменений в stdlib, которые произошли между 3 и 4. С другой стороны, то руководство вообще для дремучей версии 2.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру