The OpenNET Project / Index page

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



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

Оглавление

В состав GCC одобрено включение языка программирования D, opennews (??), 21-Июн-17, (0) [смотреть все]

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


12. "В состав GCC одобрено включение языка программирования D"  +1 +/
Сообщение от marcoemail (??), 22-Июн-17, 03:33 
     Может использовать сишные и плюснутые библиотеки, как раз переписав хидеры. Для гиков можно использовать в коде ассемблерные вставки.
     Программы компилируются очень быстро, да и по быстродействию не проигрывают сишным. Но исполняемые файлы получаются увесистые, так как тянут сборщик мусора.
Ответить | Правка | Наверх | Cообщить модератору

68. "В состав GCC одобрено включение языка программирования D"  +1 +/
Сообщение от Crazy Alex (ok), 22-Июн-17, 12:44 
Немного устаревшая информация насчёт увесистых. Они получались увесистые не потому, что тянут сборщик мусора, а потому что shared libraries не использовали. Как минимум для линукса было пофикшено пару лет назад: https://stackoverflow.com/questions/31366010/why-d-program-e...
Ответить | Правка | Наверх | Cообщить модератору

80. "В состав GCC одобрено включение языка программирования D"  –3 +/
Сообщение от Mihail Zenkov (ok), 22-Июн-17, 15:40 
Мне очень нравится D, но размер исполняемых файлов явно его слабая сторона. Shared libraries не спасает: размер поставки (bin+phobos.so) будет еще больше, чем для статики. Потребление памяти для простых приложений в любом случае очень сильно завышено (в сравнении с C).

ИМХО основная проблема, что по-прежнему линкер не может выкинуть основную массу мертвого кода. Где-то было обсуждение этой проблемы, но сходу ссылку не найду.

Есть еще страница (http://digger.k3.1azy.net/trend/), на которой отслеживалась тенденция размера исполнимых файлов в зависимости от версии, но что-то у меня она ошибку выдавать стала.

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

83. "В состав GCC одобрено включение языка программирования D"  +2 +/
Сообщение от Crazy Alex (ok), 22-Июн-17, 16:51 
На 32-битной платформе libphobos.so занимает 6 мегабайт. Учитывая, что это всё же общий рантайм, я никакой проблемы не вижу ни для чего кроме каких-нибудь сборок OpenWRT.

Насчёт потребления памяти - в первой паре тестов, которые мне попались, всё вполне прилично: https://github.com/kostya/benchmarks и https://togototo.wordpress.com/2013/08/23/benchmarks-round-t.../

Надо бы ещё поискать, но как-нибудь потом.

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

87. "В состав GCC одобрено включение языка программирования D"  +/
Сообщение от Mihail Zenkov (ok), 22-Июн-17, 20:08 
Минимальный пример:

D:

import std.stdio : writeln;
import core.sys.posix.unistd : usleep;

void main() {
    writeln("test");
    usleep(10000000);
}


C:

#include <stdio.h>
#include <unistd.h>

void main() {
    printf("test");
    usleep(10000000);
}

Размер бинарника (после strip): C - 5.4K, D - 312.6K.

Потребление памяти:

 Private  +   Shared  =  RAM used       Program
412.0 KiB + 147.5 KiB = 559.5 KiB       test_d
68.0 KiB  +  68.0 KiB = 136.0 KiB       test_c      

Для больших программ разница будет несущественна. А вот когда пишешь небольшие системные утилиты - как-то жирновато.

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

91. "В состав GCC одобрено включение языка программирования D"  +1 +/
Сообщение от Аноним (-), 22-Июн-17, 22:34 
Нет, я всё понимаю когда люди изнывают, что нужно ради одной софтины тащить пол гига жвм, но чтобы из-за 300 кб у кого-то проблемы возникали...

Кстати, попробуйте с -betterC компилировать, для любителей микробинарей как раз делался.

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

95. "В состав GCC одобрено включение языка программирования D"  –2 +/
Сообщение от Mihail Zenkov (ok), 23-Июн-17, 11:24 
> Нет, я всё понимаю когда люди изнывают, что нужно ради одной софтины
> тащить пол гига жвм, но чтобы из-за 300 кб у кого-то
> проблемы возникали...

Зачем ориентироваться на худшее, а не на лучшее? KolibriOS в 1.5 MB вкладывается. Rockbox (почти полностью на C) - 500-600 KB. Я не понимаю почему простой вывод строки на экран должен весить столько же. На uC я могу написать драйвер LCD и вывод на него на C и это будет меньше 1 KB.

ИМХО при таком раскладе системное программирование (а также IoT и прочий embedded) так и останется на C.

> Кстати, попробуйте с -betterC компилировать, для любителей микробинарей как раз делался.

Да, но это уже будет не D, а именно better C.

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

100. "В состав GCC одобрено включение языка программирования D"  +/
Сообщение от Crazy Alex (ok), 24-Июн-17, 12:51 
Потому что важны затраты усилий и риски возникновения ошибок, в том числе в ходе поддержки. Для эмбеда - это одно соотношение ввиду слабости применяемого железа (кстати, судя по всему это скоро свой эффект потеряет). Для "большого" программирования - совсем другое, там пара сотен килобайт - совершенно копеечная цена за удобство.

Кроме того, ваше сравнение вообще некорректно - я не думаю, что на C вы напишете драйвер для LCD в 1кб, используя стандартную библиотеку, тем более - десктопную. Максимум - что-то вроде musl.

P.S. Не знаю, чем вы там собирали, но при сборке вашего примерчика для 32-х бит dmd 2.0.74.0 я получил бинарник в 18376 байт, по top virt/res/shr= 9432/3706/3620. Динамическая линковка, разумеется.

Сишный пример вышел 6932 байта,  2156/512/460. Разница, конечно, есть, но отнюдь не такая катастрофичная, как в вашем примере. И тоже динамика, статика весит 720168 байт.

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

103. "В состав GCC одобрено включение языка программирования D"  +/
Сообщение от Mihail Zenkov (ok), 24-Июн-17, 13:21 
> Для эмбеда - это одно соотношение ввиду слабости применяемого железа (кстати, судя по всему это скоро свой эффект потеряет).

Не факт. Производители по-прежнему хотят минимальной себестоимости. К примеру на новых плеерах Sansa памяти на порядок меньше, чем на старых, тоже с новыми китайскими SoC (RKnano*). На роутерах/модемах/etc тоже незаметно бурного роста свободных ресурсов. Опять же - рост производительности пагубно сказывается на времени автономной работы (при одном и том же технологическом процессе).

Только на смартфонах идет бурный рост, так как гигабайты и ядра вполне неплохо можно впаривать обывателям.

> Для "большого" программирования - совсем другое, там пара сотен килобайт - совершенно копеечная цена за удобство.

Согласен, поэтому все равно свои проекты пишу на D.

Sucless сообщество тоже когда-то рассматривало D - удобнее C и нет переусложненности C++, но по-прежнему они пишут проекты на C: st - 59K, dwm - 38.7K.

> P.S. Не знаю, чем вы там собирали, но при сборке вашего примерчика
> для 32-х бит dmd 2.0.74.0 я получил бинарник в 18376 байт,
> по top virt/res/shr= 9432/3706/3620. Динамическая линковка, разумеется.

dmd-2.072, 32 бита, статика. О размере динамики нет смысла говорить без учета libphobos.so, так как полученный бинарник без нее не работоспособен.


> Сишный пример вышел 6932 байта,  2156/512/460. Разница, конечно, есть, но отнюдь
> не такая катастрофичная, как в вашем примере. И тоже динамика, статика
> весит 720168 байт.

А для gdc все будет еще печальнее.

ИМХО на самом деле проблема может оказаться гораздо серьезнее: сейчас нет крупных библиотек для D, кроме phobos. Но что будет потом, когда они появятся? Не будет ли этой же проблемы, но в другом масштабе?

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

108. "В состав GCC одобрено включение языка программирования D"  +1 +/
Сообщение от Crazy Alex (ok), 26-Июн-17, 15:13 
На железе, где потребление ресурсов напрямую влияет на себестоимость, а обновление проблематично, можно себе позволить потратить больше на разработку и оптимизацию, отбив удешевлением устройства. На десктопе/сервере выгоднее потратить ресурсы железа, но выгадать в скорости/качестве/стоимости разработки (тут уж кому что важнее). Вот об этом соотношении речь.

Ну вот сишная статика у меня вышла 700 кб, стрип не забывал, так что какие-то странные разногласия у нас.

Для gdc - да, будет печальнее, он вообще слегка отстаёт от остальных двух. Я так понимаю - в последнее время стало лучше.

Но всё же я не понимаю этой боязни шаред либ - это ж амортизированные расходы получаются,  если мы считаем, что D таки будет применяться - выходит совсем мелочь, учитывая, что 6 мегабайт сейчас и так совершенно незаметны на десктопе.

Насчёт дубущих библиотек - полагаю, особо резкого роста размера не будет. Здесь скорее есть какой-то минимум, а дальше нарастание идёт довольно плавно. Хотя может кто-то совсем с шаблонами заиграется, конечно... Но такие проблемы логично решать по мере поступления, причём чаще - в плане архитектуры самой библиотеки.

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

110. "В состав GCC одобрено включение языка программирования D"  –1 +/
Сообщение от Mihail Zenkov (ok), 26-Июн-17, 17:02 
> На железе, где потребление ресурсов напрямую влияет на себестоимость, а обновление проблематично,
> можно себе позволить потратить больше на разработку и оптимизацию, отбив удешевлением
> устройства. На десктопе/сервере выгоднее потратить ресурсы железа, но выгадать в скорости/качестве/стоимости
> разработки (тут уж кому что важнее). Вот об этом соотношении речь.

Как я уже сказал - с этим согласен и для десктопных приложений использую D именно поэтому.

> Ну вот сишная статика у меня вышла 700 кб, стрип не забывал,
> так что какие-то странные разногласия у нас.

Это косяк glibc. Но ее как раз выгоднее использовать как shared, так как она используется практически всеми приложениями. Phobos наоборот - будет использовать одно-два приложения, так что выигрыша от shared не будет, скорее наоборот.

Если взять musl (http://www.etalabs.net/compare_libcs.html) то статика будет около 13K. Для D к сожалению пока ничего подобного нет.

> Но всё же я не понимаю этой боязни шаред либ - это
> ж амортизированные расходы получаются,  если мы считаем, что D таки
> будет применяться - выходит совсем мелочь, учитывая, что 6 мегабайт сейчас
> и так совершенно незаметны на десктопе.

Да, просто не люблю необоснованных затрат.

> Насчёт дубущих библиотек - полагаю, особо резкого роста размера не будет. Здесь
> скорее есть какой-то минимум, а дальше нарастание идёт довольно плавно. Хотя
> может кто-то совсем с шаблонами заиграется, конечно... Но такие проблемы логично
> решать по мере поступления, причём чаще - в плане архитектуры самой
> библиотеки.

ИМХО dead code elimination должен работать максимально эффективно на уровне компилятора/linker'а, не требуя тучи #ifdef (или его эквивалентов).

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

111. "В состав GCC одобрено включение языка программирования D"  –1 +/
Сообщение от Mihail Zenkov (ok), 26-Июн-17, 20:37 
> Для gdc - да, будет печальнее

Сегодня похоже добили баг с ожирением из-за TypeInfo (https://forum.dlang.org/post/qswoxnddbowkzpqqhcow@forum...). Возможно теперь разрыв между gdc и dmd сократится.

H. S. Teoh говорит, что жирность phobos связана с чрезмерной зависимостью модулей друг от друга (https://forum.dlang.org/post/mailman.2794.1496351236.31550.d...), но я по-прежнему не понимаю: почему компилятор не может сам определить мертвый код?

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

104. "В состав GCC одобрено включение языка программирования D"  +1 +/
Сообщение от glebiao (ok), 24-Июн-17, 13:24 

> быстродействию не проигрывают сишным. Но исполняемые файлы получаются увесистые, так как
> тянут сборщик мусора.

Дело не в сборщике мусора, там тянется много несколько неожиданных вещей,
типа рантаймовой поддержки интроспекции и т.п. имхо, с этим можно мириться: скорость И простота разработки + скорость исполнения, перевешивают недостаток толстоватых бинарников.

При динамической линковке, размер бинарника вовсе не получается катастрофическим.

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

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

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




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

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