The OpenNET Project / Index page

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



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

Оглавление

Выпуск системной библиотеки Glibc 2.35, opennews (ok), 03-Фев-22, (0) [смотреть все]

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


121. "Выпуск системной библиотеки Glibc 2.35"  +/
Сообщение от n00by (ok), 06-Фев-22, 08:04 
>> so никаким образом не уменьшают расходы рамы - это протухший миф.
> Неся полную ахинею, Вы не потрудились хоть как-то её обосновать.
> Откройте для себя да хотя бы smem(8) -- что забавно, написанный как
> раз на питоне:
>
NAME 
>        smem - Report memory usage
> with shared memory divided proportionally.
>

Попробую за него.


#include <iostream>

int main() {
  std::cout << "Hello!";
}


Результирующий исполняемый файл связан с:
libstdc++.so.6 (~2000 килобайт)
libm.so.6 (~700 килобайт)
libgcc_s.so.1 (~90 килобайт)
libc.so.6 (~1500 килобайт)
ld-linux-x86-64.so.2 (~200 килобайт)

Итого, грубо, 4,5 Мегабайт.

Вот тут https://code.google.com/archive/p/ontl со смертью Гуглокода сломалось форматирование, но видно "24.5 Kb exe file".
Пример импортирует только ntdll, значит аналог в Linux вообще может обойтись без библиотек.

То есть разделяемые библиотеки весят как сотня-другая Хелловордов.

---

Второй момент - время инициализации библиотек. Вот я когда-то сравнивал Хелловорд на OCaml (первый вариант - интерпретатор без зависимостей), погрешность измерения зашкаливает, но представление получить можно:

$ time ./microcaml
Hello World!

real 0m0,002s
user 0m0,002s
sys 0m0,001s

Оригинальный интерпретатор:

$ time ocamlrun test/hello
Hello World!

real 0m0,007s
user 0m0,003s
sys 0m0,004s

Скомпилированный в машинный код вариант:

$ time test/hello.elf
Hello World!

real 0m0,005s
user 0m0,001s
sys 0m0,004s

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

130. "Выпуск системной библиотеки Glibc 2.35"  +/
Сообщение от Аноним (100), 07-Фев-22, 13:39 
Эникей, мне вот даже интересно. Ладно, кому интересно - я поясню на методичку этого овоща. Хотя в своём посте сообщил о разнице.

Данный бот-эникей с чего-то решил, что "Итого, грубо, 4,5 Мегабайт." имеет какое-то отношение к реальности. Хотя, на самом деле, оно никакого отношения не имеет. И как уже сказано мною выше - я объяснял почему.


Как пример, если собрать вот это "#include <iostream>" в so, то оно будет весить бесконечность. Ладно, возьмём базовые типы - оно будет весить половину от того, что он там насчитал. Но почему-то данный овощ игнорирует этот факт. Почему? Да, он просто о нём не знает. И почему эти пару мегабайт бинаря не попадают в результирующий файл? Да, эникей - их нет даже в libstdc++. А почему?


Всё очень просто, овощ, 99% из того кода, что написан в iostream и всём том, что он инклюдит ненужно. И как результат этого ненужно - этот код никуда не попадает. Он просто выпиливается.

Таким образом, если выпилить этот so-мусор и заменить на ho, то никаких 4.5мегабайт там не будет. Там будет от силы сотня килобайт и то, практически из которых - это рантайм крестов.

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

133. "Выпуск системной библиотеки Glibc 2.35"  +/
Сообщение от n00by (ok), 07-Фев-22, 14:12 
> Как пример, если собрать вот это "#include <iostream>" в so, то оно
> будет весить бесконечность. Ладно, возьмём базовые типы - оно будет весить
> половину от того, что он там насчитал.

Я правильно понимаю, что ты готов собрать std::cout << "Hello!"; в исполняемый файл без зависимостей и вдвое меньше моих 25 кб, или у тебя ещё продолжается пятница и ты совершенно пьян?

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

134. "Выпуск системной библиотеки Glibc 2.35"  +/
Сообщение от Аноним (100), 07-Фев-22, 15:24 
>> Как пример, если собрать вот это "#include <iostream>" в so, то оно
>> будет весить бесконечность. Ладно, возьмём базовые типы - оно будет весить
>> половину от того, что он там насчитал.
> Я правильно понимаю, что ты готов собрать std::cout << "Hello!"; в исполняемый
> файл без зависимостей и вдвое меньше моих 25 кб, или у
> тебя ещё продолжается пятница и ты совершенно пьян?

Во-первых я не знаю откуда ты родил эту чушь. Во-вторых - это можно сделать, очевидно. Только iostream парашный мне даже трогать лень. Это мусорное дерьмо. Слишком сильно заморачиваться нужно.

А вообще я тебе говорил о том, что iostream хоть огрызок дерьма из си с классами, но даже в нём большая его часть выпиливается, потому что она ho. Поэтому, если бы iosteam был бы реализован полностью через so и линковку, то он бы занимал пару мегабайт. Ну может не пару, но много.

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

137. "Выпуск системной библиотеки Glibc 2.35"  +/
Сообщение от n00by (ok), 07-Фев-22, 17:49 
> Во-вторых - это
> можно сделать, очевидно. Только iostream парашный мне даже трогать лень. Это
> мусорное дерьмо. Слишком сильно заморачиваться нужно.

Смотри, Петка, какая ситуация. Ты пришёл сюда, вывалил некие гипотетические выкладки. Якобы возможно, цитирую #100: "каждая программа будет использовать не просто только нужные ей функции, но эти функции будут адаптированы по месту, заинлайнены и прочее".

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

Если же ты протрезвеешь и внимательно прочтёшь моё сообщение дальше тех цифр, что тебя бомбанули, ты увидишь там ссылку на std::cout << "Hello!", который собран в исполняемый файл размером в 25 кб, без зависимостей и лишних функций, вот как в твоей цитате.

Но есть один нюанс - этот практический результат - мой.

Тебе всё понятно в этом моём сообщении, или опять стоит что-то разжевать?

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

138. "Выпуск системной библиотеки Glibc 2.35"  +/
Сообщение от Аноним (100), 07-Фев-22, 17:59 
>> Во-вторых - это
>> можно сделать, очевидно. Только iostream парашный мне даже трогать лень. Это
>> мусорное дерьмо. Слишком сильно заморачиваться нужно.
> Смотри, Петка, какая ситуация. Ты пришёл сюда, вывалил некие гипотетические выкладки. Якобы
> возможно, цитирую #100: "каждая программа будет использовать не просто только нужные
> ей функции, но эти функции будут адаптированы по месту, заинлайнены и
> прочее".
> Теперь, что бы твои слова были похожи на правду, следует не растопыривать
> пальцы, а показать какие-то практические результаты. Как только я намекнул тебе
> на это, появилось слово "заморачиваться" и "лень", что как бэ намекает.

Нет, дошколёнок. Зачем мне копаться в бездарном дерьме? Я тебя просто пошлю собирать iostream через линковку и ты убежишь плакаться мамки.

Давай попроще, дошколёнок. цпп не предполагает сравнения между какой-либо линковкой, потоу как цпп невозможно линковать. Поэтому ни в каком коде на цпп линковки никогда не было. Никакой. И не будет никогда.

Что ты, эникейская амёба, хочешь мне сообщить и что с чем сравнить? Это невозможно. Идти и переделывать на ho iostream-мусор мне нахрен не уплао. Это мусорное дерьмо, который никто в здравом уме не использует. Мне какая разница?

Хочешь сравнить на нормальном коде - ты пойдёшь плакаться мамке, потому как никогда в so ты цпп не засунешь. Это невозможно.

> Если же ты протрезвеешь и внимательно прочтёшь моё сообщение дальше тех цифр,
> что тебя бомбанули, ты увидишь там ссылку на std::cout << "Hello!",
> который собран в исполняемый файл размером в 25 кб, без зависимостей,
> вот как в твоей цитате.
> Но есть один нюанс - этот практический результат - мой.
> Тебе всё понятно в этом моём сообщении, или опять стоит что-то разжевать?

Маня, std::дерьмоcount не может быть собран куда-то ни в одной из существующих stdlib. Даже в libc++ это легаси-дерьмо, на которое всем положить.

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

139. "Выпуск системной библиотеки Glibc 2.35"  +/
Сообщение от n00by (ok), 07-Фев-22, 18:19 
> Зачем мне копаться в бездарном дерьме?

Если ты хочешь, что бы я воспринимал тебе всерьёз, тебе следует не молоть языком, а показать мне, что ты сделал.

> Я тебя просто пошлю
> собирать iostream через линковку и ты убежишь плакаться мамки.

Я уже собрал и  в исходном сообщении дал ссылку, там iostream. 25 кб экзешник без зависимостей. Я третий раз про это пишу. Ты ещё не догнал? Чем ты там лечишься?

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

140. "Выпуск системной библиотеки Glibc 2.35"  +/
Сообщение от n00by (ok), 07-Фев-22, 18:22 
Опс, малость накосячил, вот правильная ссылка https://code.google.com/archive/p/ontl/wikis/HelloWorld.wiki

По поводу битого форматирования - это не ко мне. Я за действия Гугла не отвечаю.

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

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

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




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

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