|
|
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Опять? maytonRWolf, полностью согласен. Но вы навязываете мне "повестку дня". Тема embedded development весьма интересна и обширна и заслуживает отдельного топика. Но здесь мы обсуждали другое. Мы еще обсуждали real time в приборостроениии. Мои аппонеты высказывались: - Real time OS не нужные понты. - Так же, на марсоходах real time не нужна. - VxWorks не нужна. - NASA ошибается. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 15:09 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav, я считаю что фактор realtime 1) в науке и технике нужен и имеет место 2) должен учитываться при разработке низкоуровневых протоколов и механизмов взаимодействия ПО с внешним миром. 3) не имеет значения при формальном описании АЛГОРИТМОВ в общем понимании этого слова. Ни в одном из известных описаний ИЗВЕСТНЫХ алгоритмов вы не найдете требований касающихся MemoryModel/GC, JIT-компилляторов, трансляторов и уж тем более ремарок в сторону невозможности реализовать это Java. Нет также научно подтвердённых работ которые доказывают невозможность реализовать на любом ЯП то что реализовано на С++. Кроме того некоторые товарищи которые часто и мн ого кодили в рилтайме теряют связь с реальностью становятся идеалистами и строителями FVMas/Стебельков и тому подобного. Я с такими часто и много общался. Опыт имею. Полезность их разработок - под сомнением. Под сомнением также человеко-часы и килокаллории которые на эту риалтаймовость тратятся. P.S. Ваш покорный слуга также этим грешен в пятничных топиках и в поиске простых чисел. Но это как говорицца just for fun и чем бы народ не тешился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 15:21 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravМы еще обсуждали real time в приборостроениии. Вот оно про что было :) походу мы разные вещи обсуждали. Давай не будем по второму разу тут обсуждать. Если вопрос важен - заведи отдельный топик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 15:30 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
mayton3) не имеет значения при формальном описании АЛГОРИТМОВ в общем понимании этого слова. Ни в одном из известных описаний ИЗВЕСТНЫХ алгоритмов вы не найдете требований касающихся MemoryModel/GC, JIT-компилляторов, трансляторов и уж тем более ремарок в сторону невозможности реализовать это Java. Собственно мы тогда весь вечер спорили ни о чем. Я с вашими словами абсолютно согласен. И сам постоянно повторял про возможность описания алгоритмов хоть на ассемблере МК-52, хоть на машине Тьюринга. Я напирал на то, что некоторые алгоритмы абсурдно описывать на Java. Как вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум? Но умно ли это? Как описать RAII на C#? Ну можно воспользоваться оператором using (?) и методом Object.Dispose(). А если их нет в языке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 15:46 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravКак описать RAII на C#?да нельзя описать алгоритм ни на одном ЯП, хоть C#, хоть на ассемблере МК-52. На них можно ( или нельзя ) алгоритм реализовать. По описанию, сделанному с помощью других средств. Отличать пора бы уже описание от реализации. PS На дворе стоит забор, а на нём мочало. Эта песня хороша - начинай с начала )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 16:14 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
egorychpetravКак описать RAII на C#?да нельзя описать алгоритм ни на одном ЯП, хоть C#, хоть на ассемблере МК-52. На них можно ( или нельзя ) алгоритм реализовать. По описанию, сделанному с помощью других средств. Отличать пора бы уже описание от реализации. Ну вот. Так и нужно. Но в терминах С++ я не просто опишу (в упрощенном варианте) любой алгоритм, я еще и на С++ запрограммирую любой алгоритм. Даже сборку мусора в C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 16:22 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravmayton, Кстати, действительно, опишите, пожалуйста, RAII на C#. Особенно в контексте локальных переменных. Я к слову.. не глубокий специалист в шарпе. И сам термин RAII нетипичен и не так часто вобщем используется. Думаю что он достоин отдельного топика. Я люблю технически споры. Но в данном конкретном случае я-бы подождал спорить до тех пор пока сам не разберусь в предмете спора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 16:46 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЯ напирал на то, что некоторые алгоритмы абсурдно описывать на Java. Как вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум? Я подозреваю что и я и многие здесь присутствующие нечитали исходников диспетчера потоков ОС Windows. И поэтому о глубине и степени сложности мы можем иметь лишь приблизительное представление. Но если вы опишите словами какие там трудности и с какими проблемами мы сталкиваемся то думаю какое-то решение можно придумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 16:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetravЯ напирал на то, что некоторые алгоритмы абсурдно описывать на Java. Как вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум? Я подозреваю что и я и многие здесь присутствующие нечитали исходников диспетчера потоков ОС Windows. И поэтому о глубине и степени сложности мы можем иметь лишь приблизительное представление. Но если вы опишите словами какие там трудности и с какими проблемами мы сталкиваемся то думаю какое-то решение можно придумать. Я, конечно, тоже не читал тех исходников. - 100% для оптимизации ядра там используется union. - Так же любой вариант прямого доступа к памяти. - В С/С++ достаточно просто встраивается асм-функция сохраняющая/восстанавливающая значения регистров процессора при переключении потоков. - Управление драйверами в реальном времени. - Переключение потоков через заданный квант времени. Как на Яве это описать? Можно конечно написать на псевдокоде (я не работал на Яве): Код: plaintext 1. И написать функцию сохранения контекста потока. Но вы где-то такое видели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 17:14 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
mayton, Да, в дополнению к union еще структуры с полями в виде битовых полей! Модератор: Тема перенесена из форума "C++". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 17:20 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetrav, я тебе даже более скажу. В Java я не могу сделать swap(..) для двух строковых аргументов. Но это не мешает мне успешно решать все возникающие бизнес-задачи. Честно говоря я очень разочарован списком который ты привёл. Там нет алгоритмически нерешаемых вопросов. Есть технические limitations которые ты искусственно ввёл. Ты требуешь от меня решать на Java некоторые технические задачи но при этом заведомо ставишь ограничение на то как мне их решать. В этом есть некая натяжка. Ты как-будто-бы во время игры меняешь правила игры. Так не я ввёл эти ограничения. А жизнь. Я просто говорю, что некоторые алгоритмы бессмысленно (но можно) описывать на языке некоторой ВМ, по определению ограниченной. По сравнению с С++, который ограничений не имеет. maytonБолее развёрнуто я отвечу тебе на эти пункты чуть позже. Щас некогда. Не очень жду, извини. Устал от спора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 17:44 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav, ты тут доказываешь банальные веши, с которыми и спорить никто не собирается. Пишу как я тебя услышал в том почищенном топике. Ты утверждаешь: "есть задачи которые можно решить только на Си (реалтайм, ОС, драйвера и т.п.)", да, согласен, на высокоуровневых языках они не очень решаются, а то и вовсе не решаются. Затем ты расширил свою мысль: "на С/С++ можно решать любую задачу которая решается, причем быстрее (как минимум не медленнее) чем на высокоуровневом ЯП", да, согласен, круг задач которые можно решать на С/С++ шире. А вот дальше из этого ты делаешь абсолютно нелогичный вывод: "Все задачи НАДО решать на С/С++". С чего вдруг производителность конечного продукта стала единственной характеристикой оценки качества продукта? Вот с этим последним выводом ни я ни другие учавствующие не согласны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 18:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TА вот дальше из этого ты делаешь абсолютно нелогичный вывод: "Все задачи НАДО решать на С/С++". С чего вдруг производителность конечного продукта стала единственной характеристикой оценки качества продукта? Вы что-то пропустили в том почищенном топике. Например, серьезные задачи управления данными я рекомендовал решать на SQL (NoSQL тут не трогаем). Потому что получится и производительнее и быстрее в разработке. Кроме того, я не призывал отказываться от Явы или Шарпа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 18:12 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima T С чего вдруг производителность конечного продукта стала единственной характеристикой оценки качества продукта? Вот с этим последним выводом ни я ни другие учавствующие не согласны. Как говорят Украинские болельщики - "Кто выше бье, тот краще грает" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 18:14 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Модератору. Может быть так - "О применимости алгоритмических языков для описания алгоритмов" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 18:26 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravВы что-то пропустили в том почищенном топике. возможно, там были очень размытые формулировки. petravНапример, серьезные задачи управления данными я рекомендовал решать на SQL (NoSQL тут не трогаем). Потому что получится и производительнее и быстрее в разработке. Кроме того, я не призывал отказываться от Явы или Шарпа. Ну и чудненько. Вопросов больше не имею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 18:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonНет также научно подтвердённых работ которые доказывают невозможность реализовать на любом ЯП то что реализовано на С++. В начале 90-х на Foxpro сделал disassembler obj файлов. Не помню правда мотивы почему решил написать на Foxpro ... /тогда был QuickC http://vetusware.com/download/QuickC 2.51/?id=3503 и его часто использовал/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 19:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012maytonНет также научно подтвердённых работ которые доказывают невозможность реализовать на любом ЯП то что реализовано на С++. В начале 90-х на Foxpro сделал disassembler obj файлов. Не помню правда мотивы почему решил написать на Foxpro ... /тогда был QuickC http://vetusware.com/download/QuickC 2.51/?id=3503 и его часто использовал/ Вот видите. ФоксПро умер, а вы и мотивов своих не помните. =) В начале 90-х я был школьником и у меня бы Спектрум, который загружался в интерпретатор Бейсика. Так я на Бейсике начал реализовывать свой язык программирования (после того как научился писать синтаксические анализаторы). А вот я помню почему прекратил: не было своих идей (я копировал бейсик на бейсике), работало медленно. По ассемблеру тогда с литературой были проблемы. Зато на Спектруме еще до института выучил (кроме бейсика), Паскаль и Форт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 19:18 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav- 100% для оптимизации ядра там используется union. Очень странный тезис. Я знаком с Union и могу подтвердить что это замечательная штука. В особенности в части доступа к bitfield. В некоторых ЯП нет концепции union. Но я могу эмулировать работу с union используя целочисленные операции над int, long. Платформа позволяет. Поэтому вобщем-то не вижу принципиальных ограничений. Тезис был-бы сильнее в сравнении в PL/SQL машиной. Там - действительно нет битовых операций и это создавало проблемы для криптографических функций и функций кодирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 19:27 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЯ просто говорю, что некоторые алгоритмы бессмысленно (но можно) описывать на языке некоторой ВМ, по определению ограниченной. По сравнению с С++, который ограничений не имеет. Как на на C++ будет выглядеть алгоритм(?)/макрос(?) в режиме компиляции берущий из СУБД структуру БД и проверяющий в компайл-тайме правильность SQL-запросов, записанных в коде в виде строк (не ORM)? Я это к тому, что шаблоны C++ при всей их полноте по Тьюрингу не имеют средств ввода-вывода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 19:34 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetrav- 100% для оптимизации ядра там используется union. Очень странный тезис. Я знаком с Union и могу подтвердить что это замечательная штука. В особенности в части доступа к bitfield. В некоторых ЯП нет концепции union. union не имеет в С++ никакого отношения к битовым полям. Это способ в одной области памяти разместить несколько POD объектов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. maytonНо я могу эмулировать работу с union используя целочисленные операции над int, long. Платформа позволяет. Поэтому вобщем-то не вижу принципиальных ограничений. Хорошо. Изначальный ваш посыл неверен, но опишите на Яве работу с со структурой с битовыми полями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 19:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikpetravЯ просто говорю, что некоторые алгоритмы бессмысленно (но можно) описывать на языке некоторой ВМ, по определению ограниченной. По сравнению с С++, который ограничений не имеет. Как на на C++ будет выглядеть алгоритм(?)/макрос(?) в режиме компиляции берущий из СУБД структуру БД и проверяющий в компайл-тайме правильность SQL-запросов, записанных в коде в виде строк (не ORM)? Я это к тому, что шаблоны C++ при всей их полноте по Тьюрингу не имеют средств ввода-вывода. Будет выглядеть как архив, в котором будет следующее: - Исходники MySQL на С (или уже С++ ?). - Мой скрипт на SQL. А теперь попробуйте эти языки поменять местами. =))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 19:42 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravХорошо. Изначальный ваш посыл неверен, но опишите на Яве работу с со структурой с битовыми полями. Прошу регламента. Я сперва отвечу на то что обещал. А потом - комментарии. Имейте терпенье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 19:49 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravФоксПро умер Не умер, а стал менее используемым. Не знаю хватит ли сил /в одиночку/ довести до production в целом ту программную технологию над которой работаю, но поверьте - хорошее не забывается /в том смысле, что в Foxpro было воплощено много интересных программных подходов/. PS: Странные какие-то суждения на счет "умер" ... Для разработчика важно не то как "раскручен" продукт, а какие программные технологии и идеи на нем были воплощены ... Да и при разработке не чураюсь использовать и php и javascript /когда это целесообразно/ ... Например с использованием их написал программу, которая на основе данных из страниц MSDN генерировала *.h, *.cpp wrapper libraries. Вот к примеру привожу архив, содержащий текст одной /из десятков libraries/, которые генерировала программа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 20:05 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravБудет выглядеть как архив, в котором будет следующее: - Исходники MySQL на С (или уже С++ ?). - Мой скрипт на SQL. А теперь попробуйте эти языки поменять местами. =))) petravНапример, серьезные задачи управления данными я рекомендовал решать на SQL Вот чезанах? А потом пишешь petravВы что-то пропустили в том почищенном топике. Троллим? Парни пошлите его нах, не отвечайте, не кормите тролля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 20:16 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TВот чезанах? А потом пишешь Троллим? Парни пошлите его нах, не отвечайте, не кормите тролля. О Чёрт, какая у Вас агрессия! Просто успокойтесь, если не понимаете о чем речь. И, точно, лучше конкретно Вам уйти из ветки. =))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 20:23 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravИ, точно, лучше конкретно Вам уйти из ветки. Ни кому из ветки уходить не надо ... Но и саблей махать налево и направо и рубить "не нужное" как бы тоже лишнее ... Все таки неужели "словесно блок схемный" стиль описания алгоритмов - лучшее из всех возможностей. Неужели академический мир не создал каких то спецификаций ... Вот большие корпорации частенько разрабатывают свои внутренние стандарты для описания задач ... Какие tools имеются для создания блок схем ... Понятно что сам могу поискать в inet, но может кто поделится своим опытом ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 20:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012Все таки неужели "словесно блок схемный" стиль описания алгоритмов - лучшее из всех возможностей. Неужели академический мир не создал каких то спецификаций ... Создавал, что вы! Целый огромный язык создали — Unified Modeling Language . В общем и целом проект провалился. Не набрал популярности. Хотя на стартовом ажиотаже считался чуть ли не серебренной пулей. Должен был решить все проблемы в программировании. Упростить взаимодействие программистов с заказчиками. Некоторые даже мечтали об Executive UML — возможность программировать только лишь рисуя диаграммы (и, в мечтах, ничего не зная о программировании). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 20:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Пропустил начало, видимо тема вырезана откуда то. Пишу исключительно в реалтайме. Позавчера смотрел для интереса - алгоритм ЛСУ отрабатывается 1.6мс гарантированно. Любая система с GC по определению не является РТ. Обоснование было уже давно, примерно когда создавали microJava. А в чем вопрос то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 20:53 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглА в чем вопрос то? Утверждение моих оппонентов изначально выглядело так: любой алгоритм можно описать на чём угодно, хоть на блок-схемах, хоть на Яве (с сборщиком мусора). Я в общем, был согласен. Но уточнил, что некоторые алгоритмы глупо и бессмысленно описывать на языке виртуальной машины. В том числе риалтайм алгоритмы, прямой доступ к памяти. Постепенно в споре моё утверждение расширилось: любой алгоритм можно описать и запрограммировать на С++, а Ява и C# ограничены виртуальной машиной. Мои оппоненты утверждают: Ява ограничений не имеет в области формального описания алгоритмов. С тех спор и спорим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 21:03 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Кто спорит, пусть идет читать Кнута "Исскусство программирования" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 21:08 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravС тех спор и спорим. Диалог много лучше ... https://ru.wikipedia.org/wiki/UML https://ru.wikipedia.org/wiki/CASE Использовал кто? Насколько эффективно их использование ... ... ... Возможно ли применить эти технологии при разработке на C и C++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 21:09 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012petravС тех спор и спорим. Диалог много лучше ... https://ru.wikipedia.org/wiki/UML https://ru.wikipedia.org/wiki/CASE Использовал кто? Насколько эффективно их использование ... ... ... Возможно ли применить эти технологии при разработке на C и C++? Я использовал на работе UML. Хороший инструмент. Но никакого конкурентрого преимущества при проектировании не даёт. Можно заменить блоксхемами, школьной доской, MS Word. В плане же документирования совсем не исключает написания текстовой документации. Термин UML пропал из эфира лет 10-15-ть назад. Вместе с CASE. Да, с С++ использовать можно. UML — это язык моделирования ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 21:25 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav- Так же любой вариант прямого доступа к памяти. Мы живём в эпоху виртуализации. Виртуальной стала память. Адресация. Если вы покупаете хостинг. То в 99% случаев вы покупаете виртуальную машину в контейнере Xen/VBox/HPUx Containers/Defence Zones. И как, через какой механизм или через какой стек технологий она видит память одному админу известно. Если вы - кодер технологий MS.Net, Java, Python, Perl, PHP, то у вас нет задач адресуемого доступа ко всей памяти. Для буферов I/O и различных алгоритмических идей есть возможность аллоцировать байтовый массив и решать задачу в рамках имеющейся относительной адресации. Я не знаю сегодня задач кроме собственно создания ОС и аллокатора памяти которая требует в обязательном порядке т.н. прямого доступа. Собственно прямой доступ к памяти по степени необходимости и целесообразности граничит с доступом к физическим секторам HDD. Это вызывает удивление и здравые вопросы о смыслах. И я думаю что 9 из 10 разработчиков способны прожить длинную и счастливую жизнь но так и не озадачиться подобным вопросом. Кроме того ЕМНИП вопрос звучал в контексте создания т.н. диспетчера потоков Windows. Очевидно в этом есть какой-то смысл. Нужно у автора уточнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 22:28 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonКроме того ЕМНИП вопрос звучал в контексте создания т.н. диспетчера потоков Windows. Очевидно в этом есть какой-то смысл. Нужно у автора уточнить.Нет, диспетчер потоков был (и есть) в другом топике. А тут вопрос изначально звучал: - данные можно организовать вот так <пример на Java> - не хочу учить Java потому что она на виртуальной машине основана а значит тормозная. - а как это влияет на формальные структуры и алгоритмы? И вот тут-то наш тролль и проснулся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 22:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav - В С/С++ достаточно просто встраивается асм-функция сохраняющая/восстанавливающая значения регистров процессора при переключении потоков. Нужно плясать от постановки. Мне в жизни не приходилось кодить свой менеджер потоков поэтому я и не знаю для чего вы требуете "очень простого встраивания асм-функций". Возможно вы бравируете связью С++ и архитектуры. Но давайте будем честными. С++ также из коробки не пригоден для решения этой задачи влоб. В любом случае мы будем исследовать варианты конкретных целевых архитектур, операционок и компилляторов и подпиливать напильником С++ с разных сторон, наполнять ваше приложение проверкой макросов, формировать сборочные скрипты и различные варианты окружений. Тот же АСМ может быть разным. И это делает задачу нетривиальной. И даже сам термин "поток" имеет варианты толкований. В некоторых ОС он вырождается в process с shared-memory, в некоторых процесс не существует без 1 потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 22:42 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav- Управление драйверами в реальном времени. Здесь я в недоумении. Как управлять драйверами в реальном времени. Возможно это прозрачный намёк на ваши знания и навыки. Возможно вы знаток QNX, и микроядерных архитектур и несете некое тайное знания. Возможно есть задачи сродни полётов на Марс где очень важно . Или нет жизненно важно выгружать и обновлять драйверы без приостановки full-cycle эксплуатации ОС но я к сожалению с такими задачами не сталкивался и наверное так и не столкнусь. Но если у вас есть ценный пример тык скысть из best practices по driver management то озвучте его плиз и мы вместе обсудим. Мне пока достаточно Java Plugin, ClassLoader, OSGI. В Windows я дрова ставлю как обычный пользователь а в Unix системах мне дрова ставят девопсы и прочие люди которые за это получают деньги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 22:52 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetrav- Так же любой вариант прямого доступа к памяти. Мы живём в эпоху виртуализации. Виртуальной стала память. Адресация. Если вы покупаете хостинг. То в 99% случаев вы покупаете виртуальную машину в контейнере Xen/VBox/HPUx Containers/Defence Zones. И как, через какой механизм или через какой стек технологий она видит память одному админу известно. Если вы - кодер технологий MS.Net, Java, Python, Perl, PHP, то у вас нет задач адресуемого доступа ко всей памяти. Для буферов I/O и различных алгоритмических идей есть возможность аллоцировать байтовый массив и решать задачу в рамках имеющейся относительной адресации. Я не знаю сегодня задач кроме собственно создания ОС и аллокатора памяти которая требует в обязательном порядке т.н. прямого доступа. Собственно прямой доступ к памяти по степени необходимости и целесообразности граничит с доступом к физическим секторам HDD. Это вызывает удивление и здравые вопросы о смыслах. Вы меня простите, но мне кажется, что вы не понимаете разницы между даже уже разнородными понятиями: - Гипервизор. - Прямая адресация. - Виртуальная память. - Кольца защиты. - Прямой доступ к памяти в С++. - Доступ к памяти в .NET, например. Я уж не говорю о том, что вы не знаете, что такое union и битовые поля в С++. Ну о чем тут можно разговаривать?! И да, я изначально напирал на алгоритмы ОС и драйверов (но не только!). Но вы даже не понимаете разницы в прямом доступе к памяти в обычных С++ приложениях и в доступе к памяти в ВМ (который вы там вообще управлять не можете). maytonИ я думаю что 9 из 10 разработчиков способны прожить длинную и счастливую жизнь но так и не озадачиться подобным вопросом. Кроме того ЕМНИП вопрос звучал в контексте создания т.н. диспетчера потоков Windows. Очевидно в этом есть какой-то смысл. Нужно у автора уточнить. Я не знаю что вам сказать, если вы ставите знак равно между массивом байтов в .NET и массивом байтов в native C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 22:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetrav - В С/С++ достаточно просто встраивается асм-функция сохраняющая/восстанавливающая значения регистров процессора при переключении потоков. Но давайте будем честными. С++ также из коробки не пригоден для решения этой задачи влоб. Подписываюсь под этим. Если в C++ разрешается вставить код на asm и при этом продолжаем считать его кодом C++, то в C# (виртуальная машина, сборщик мусора, все дела) должно разрешаться вызвать код на C++ (для недотнетчиков сразу скажу: это делается через так называемый PInvoke одной строкой кода) и при этом будем продолжать считать это кодом C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:05 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav- Переключение потоков через заданный квант времени. Как на Яве это описать? Я чувствую что мы с вами ходим по кругу. Вы совершенно здраво очерчиваете круг технологических лимитов которыми наполнена платформа Java. Но это не значит что задача алгоритмически нерешаеме. В конце концов я могу эмулировать процессор и с помощью счётчиков тактов, continuations, и используя имеющийся механизм multithreading реализовать модель процессора x86 и эмулировать кванты времени и весь прочий нужный вам функционал. И поскольку в данном вопросе вы не информированы то я делаю вам одолжение и информирую вас. Что технически, задача эмуляции процессора и ОС на Java сегодня уже решена. Я даю вам ссылку на проект jDoxBox. Это ОС MS-DOC + стек x86 технологий реализованных как обычное java приложение. http://jdosbox.sourceforge.net/cms/ Исходный код svn checkout http://svn.code.sf.net/p/jdosbox/code/trunk jdosbox-code Прошу вас ознакомиться и принять к сведению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:08 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглПропустил начало, видимо тема вырезана откуда то.Да, тема вырезана. ЗимарглЛюбая система с GC по определению не является РТ. Я берусь с этим поспорить ;). Запускаем две системы с GC, выполняющие одну работу. Когда в одной из них подходит время сборки мусора (GC выдаст заранее событие об этом) вся работа возлагается на вторую систему. Когда первая соберёт мусор, снова подключается к работе. Может уйти на сборку вторая. Собственно, так давно уже делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЯ уж не говорю о том, что вы не знаете, что такое union и битовые поля в С++. Вы - напористый малый. Я действительно их спутал со struct. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:12 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonВозможно вы бравируете связью С++ и архитектуры. Вот! Совершенно верно! Именно об этом я и говорю. Кроме того на С++ реализованы все ВМ, все ОС и т.д. На С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:13 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЯ не знаю что вам сказать, если вы ставите знак равно между массивом байтов в .NET и массивом байтов в native C++. Где я ставлю знак равно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:14 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetravЯ уж не говорю о том, что вы не знаете, что такое union и битовые поля в С++. Вы - напористый малый. Я действительно их спутал со struct. Их и спутать то нельзя. Упрощая (очень упрощая): - union это несколько структур в одной структуре (одной области памяти). - bit set - это последовательность упакованная (на уровне битов) в памяти разных типов данных данных (встроенных) размер которых мы ограничиваем количеством битов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:17 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravКроме того на С++ реализованы все ВМ, все ОС и т.д. Не все. Запросто можно написать на огромном количестве языков. Тот же GC для дотнета был изначально написан на Лиспе. На диалекте C# были написаны ОСи Singularity и Midori. petravНа С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ. С 90-х годов прошлого века существуют процессоры, аппаратно выполняющие байт-код Java. Попробуй решить на них что-нибудь на C++. :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:23 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonВ конце концов я могу эмулировать процессор и с помощью счётчиков тактов, continuations, и используя имеющийся механизм multithreading реализовать модель процессора x86 и эмулировать кванты времени и весь прочий нужный вам функционал. И поскольку в данном вопросе вы не информированы то я делаю вам одолжение и информирую вас. Что технически, задача эмуляции процессора и ОС на Java сегодня уже решена. Я даю вам ссылку на проект jDoxBox. Это ОС MS-DOC + стек x86 технологий реализованных как обычное java приложение. Так об этом я вам всегда и говорил! Даже есть на JS (в браузере) эмулятор Спектрума. Что, что бы описывать системные алгоритмы в Яве вам внутри ВМ придется создать свою другую ВМ. И в рамках её описывать системные алгоритмы. Но к современным процессорам, восокопроизводительным вычислениям, реал-тайму это не будет иметь никакого отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:26 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikpetravКроме того на С++ реализованы все ВМ, все ОС и т.д. Не все. Запросто можно написать на огромном количестве языков. Тот же GC для дотнета был изначально написан на Лиспе. На диалекте C# были написаны ОСи Singularity и Midori. Конечно он ошибается. Операционки писались всегда на "C". Собственно ради этого и был создан первый компиллятор. На плюсах был написан ЕМНИП BeOS та и тот уже приказал долго жить. Насчёт ВМ - не готов щас спорить. Но можно поднять исходники OpenJDK к примеру и глянть что к чему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:27 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravк современным процессорам, восокопроизводительным вычислениям, реал-тайму это не будет иметь никакого отношения. Вот интересный ты человек. Тоесть ты сам будешь решать что реалтайм а что не реалтайм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:32 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikpetravКроме того на С++ реализованы все ВМ, все ОС и т.д. Не все. Запросто можно написать на огромном количестве языков. Тот же GC для дотнета был изначально написан на Лиспе. На диалекте C# были написаны ОСи Singularity и Midori. Про GC на Лиспе - ссылку на сайт Майкрософта, пожалуйста. А сам Лисп, конечно, был реализован на С/С++. Тот проект Microsoft Reserch ничем не закончился. petalvikpetravНа С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ. С 90-х годов прошлого века существуют процессоры, аппаратно выполняющие байт-код Java. Попробуй решить на них что-нибудь на C++. :D Я еще слышал про Лисп-процессоры. Но где они? В 90-х? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:33 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravКроме того на С++ реализованы все ВМ, все ОС и т.д.Врушка, большинство написано Си. Да и начиная со времен пентиума виртуализация поддерживается на уровне CPU практически во всех процессорах. То есть примерно с начала 90-х ты практически не можешь залезть в память напрямую вообще, даже на нулевом кольце. Любое обращение к памяти идет через VT встроенную в процессор. petravНа С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ.Да, да. Ты уже утверждал как-то что программа на С++ не будет работать в VitualBox, потому-что там ВМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:33 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetalvikпропущено... Не все. Запросто можно написать на огромном количестве языков. Тот же GC для дотнета был изначально написан на Лиспе. На диалекте C# были написаны ОСи Singularity и Midori. Конечно он ошибается. Операционки писались всегда на "C". Собственно ради этого и был создан первый компиллятор. На плюсах был написан ЕМНИП BeOS та и тот уже приказал долго жить. Насчёт ВМ - не готов щас спорить. Но можно поднять исходники OpenJDK к примеру и глянть что к чему. Конечно, я в данном споре понимаю С как подмножество С++. Хотя знаю, что современный С обладает возможностями которых нет в С++. В прочем, как и "не современный" С. В общем, это языки одной сути, в кавычках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЯ еще слышал про Лисп-процессоры. Но где они? В 90-х? Пора подключать тяжёлую артиллерию. Может щас Илья сюда заглянет и шандарахнет тебя CommonLisp и Closure-ом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetravк современным процессорам, восокопроизводительным вычислениям, реал-тайму это не будет иметь никакого отношения. Вот интересный ты человек. Тоесть ты сам будешь решать что реалтайм а что не реалтайм. Нет, доверимся разработчикам QNX. ОС написана на С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:38 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravmaytonпропущено... Вот интересный ты человек. Тоесть ты сам будешь решать что реалтайм а что не реалтайм. Нет, доверимся разработчикам QNX. ОС написана на С. А когда я играю в Minix (Android 4.2) это реалтайм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
White OwlpetravКроме того на С++ реализованы все ВМ, все ОС и т.д.Врушка, большинство написано Си. Да. Мне до бесконечности писать аббревиатуру С/С++? Кстати, GCC недавно вроде переписан на С++, это не ОС. =) White OwlДа и начиная со времен пентиума виртуализация поддерживается на уровне CPU практически во всех процессорах. То есть примерно с начала 90-х ты практически не можешь залезть в память напрямую вообще, даже на нулевом кольце. Любое обращение к памяти идет через VT встроенную в процессор. Только эта виртуальная память имеет слабое отношение к тому как ты с памятью может обращаться в ВМ. Разные уровни, но уже не процессора. White OwlpetravНа С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ.Да, да. Ты уже утверждал как-то что программа на С++ не будет работать в VitualBox, потому-что там ВМ. Это ты рассказывал, что вот мы написали прогу на С++, а она под VitualBox не запустилась. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:45 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetravпропущено... Нет, доверимся разработчикам QNX. ОС написана на С. А когда я играю в Minix (Android 4.2) это реалтайм? Minix — это в твоем понимании игра? Я в них не ориентируюсь. В моем понимании Minix — это операционная система микроядерная. Применения не нашла, кроме лекций уважаемого профессора Таненбаума. Андроид — ядро Linux. Ничего из этого к реал-тайму отношения не имеет (кроме, возможно LinuxRT). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravMinix — это в твоем понимании игра? Я в них не ориентируюсь. В моем понимании Minix — это операционная система микроядерная. Применения не нашла, кроме лекций уважаемого профессора Таненбаума. Андроид — ядро Linux. Ничего из этого к реал-тайму отношения не имеет (кроме, возможно LinuxRT). Вот Minix. Это ТВ-приставка на базе Android. http://www.minix.com.hk/Products/MINIX-NEO-X5mini-ANDROID.html Нет мне с этого момента еще интереснее. Ты можешь не бравируя громкими брендами Линуксов дать мне своё определение реал-тайма? Как инженер. Своими словами. Ну-же. Смелее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:55 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravТолько эта виртуальная память имеет слабое отношение к тому как ты с памятью может обращаться в ВМ. Разные уровни, но уже не процессора.Это ты рассказывай тем кто ни разу не писал своих менеджеров памяти. Авось поверят. petravЭто ты рассказывал, что вот мы написали прогу на С++, а она под VitualBox не запустилась. =)Врунишка. Даже жаль что я потер все твои перлы, и хотелось бы ткнуть тебя носом в них, но все равно ж отвертишься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetrav- Управление драйверами в реальном времени. Здесь я в недоумении. Как управлять драйверами в реальном времени. Предоставить возможность драйверу сесть на аппаратное прерывание таймера. Или снять его от туда. Только не в твоей ВМ реализованной в JVM, а на реальном железе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 23:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravmaytonпропущено... Здесь я в недоумении. Как управлять драйверами в реальном времени. Предоставить возможность драйверу сесть на аппаратное прерывание таймера. Или снять его от туда.И это ты называешь управлением? petrav Только не в твоей ВМ реализованной в JVM, а на реальном железе.Еще раз повторяю свой оригинальный вопрос: Если мы написали драйвер (пусть на С++) способный садится на аппаратное прерывание таймера. Этот драйвер сможет работать внутри ВМ реализованной в JVM или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravmaytonпропущено... Здесь я в недоумении. Как управлять драйверами в реальном времени. Предоставить возможность драйверу сесть на аппаратное прерывание таймера. Или снять его от туда. Только не в твоей ВМ реализованной в JVM, а на реальном железе. Друг. Это не Алгоритмическая задача. Здесь нет проблемы алгоритмизации. Я еще раз тебя одёргиваю. Любые задачи сопряжения с внешним миром имеют своё коробочное решение в Java через JNI. Пойми наконец. Если ты ратуешь за архитектурные недостатки Java - ОК. Опиши мне проблему в терминах необходимости и я пойму. Но только не придумывай синтетические постановки где еще JVM не может какой порт прочитать и какую ячейку памяти. Это НЕ проблема алгоритмов. Это ВОПРОС API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:03 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravПро GC на Лиспе - ссылку на сайт Майкрософта, пожалуйста. https://channel9.msdn.com/Shows/Going Deep/Patrick-Dussud-Garbage-Collection-Past-Present-and-Future petravА сам Лисп, конечно, был реализован на С/С++. Ну-ка, ну-ка, в каком году появился C++ и в каком LISP? petravТот проект Microsoft Reserch ничем не закончился. Что значит "ничем"? ОСи написаны, в некоторых отношениях эффективнее привычных (в частности, как раз управление памятью: Singularity рвала всех по скорости её выделения). То, что они не применяются - дело десятое. Каждый год множество программеров, осваивающих C/C++/Asm пишут собственные ОС (чаще всего ограничиваются загрузчиком ядра). Кто этим не баловался? Всё это в итоге идёт в корзину. Это же не значит, что проект написания осей на Сях ничем не закончился. petravЯ еще слышал про Лисп-процессоры. Но где они? В 90-х? М-м, и что? А на чём писали ОСи до появления Си? Неужто компы появились одновременно с появлением C? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonНет мне с этого момента еще интереснее. Ты можешь не бравируя громкими брендами Линуксов дать мне своё определение реал-тайма? Как инженер. Своими словами. Как программист. Есть черный ящик. По ТЗ на его вход подаётся сигнал типа S1 и в ТЗ написано: ответ на S1 не более N долей секунд. В испытаниях на жесткое реальное время, если хотя бы раз лимит времени превышен, то это брак. В испытаниях на мягкое реальное время, иногда черный ящик может запаздывать, но является рабочим ящиком. Только после определенного заданного по ТЗ процента пропусков он становится браком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:06 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravПо ТЗ на его вход подаётся сигнал типа S1 и в ТЗ написано: ответ на S1 не более N долей секунд. В испытаниях на жесткое реальное время, если хотя бы раз лимит времени превышен, то это брак. В испытаниях на мягкое реальное время, иногда черный ящик может запаздывать, но является рабочим ящиком. Только после определенного заданного по ТЗ процента пропусков он становится браком. Друг. А вот если мой андроид за 1/30 долю секунды успевает декодировать 1 кадр FullHD фильма. Переключить front-back buffer, и продолжить декодировать следующий кадр еще через 1/30 часть секунды. Можно ли утверждать что я имею устройство реального времени? Я ведь смотрю кино плавно и без jitter-а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:13 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
White OwlВрунишка. Даже жаль что я потер все твои перлы, и хотелось бы ткнуть тебя носом в них, но все равно ж отвертишься. 1. Уважаемый модератор, на будущее, не три посты, а сразу переноси их сюда. 2. Я не хочу ругаться, а следовательно не хочу отвечать человеку с такими пренебрежительными обращениями ко мне. Профит? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:13 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetravПо ТЗ на его вход подаётся сигнал типа S1 и в ТЗ написано: ответ на S1 не более N долей секунд. В испытаниях на жесткое реальное время, если хотя бы раз лимит времени превышен, то это брак. В испытаниях на мягкое реальное время, иногда черный ящик может запаздывать, но является рабочим ящиком. Только после определенного заданного по ТЗ процента пропусков он становится браком. Друг. А вот если мой андроид за 1/30 долю секунды успевает декодировать 1 кадр FullHD фильма. Переключить front-back buffer, и продолжить декодировать следующий кадр еще через 1/30 часть секунды. Можно ли утверждать что я имею устройство реального времени? Я ведь смотрю кино плавно и без jitter-а? Мягкое реальное время (ты можешь не замечать эпизодический пропуск кадров). Которое в любой момент может перейти в состояние брака (тормоза). Ведь это консьюмерское устройство. Т.е. там где речь идет о жизни людей, но допустим черный ящик с мягким реальным временем, твоё устройство не применимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:19 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikА на чём писали ОСи до появления Си? Неужто компы появились одновременно с появлением C? За ссыку про первый GC на Лиспе - спасибо ознакомлюсь. А по поводу прочего. А вы знаете? Какие там первые ОС на Си? Вот первый программист на планете — Ада Лавлейс — программировала на компьютере, который даже не получилось воплотить в железе (могу в деталях ошибаться). Какие уж тут ОС на Си. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:29 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravWhite OwlВрунишка. Даже жаль что я потер все твои перлы, и хотелось бы ткнуть тебя носом в них, но все равно ж отвертишься. 1. Уважаемый модератор, на будущее, не три посты, а сразу переноси их сюда. 2. Я не хочу ругаться, а следовательно не хочу отвечать человеку с такими пренебрежительными обращениями ко мне. Профит? :)1. Сейчас я простой человек. Можешь больше не боятся страшного меня. 2. Пока ты передергиваешь и перевираешь чужие слова - тебя будут считать врунишкой (как минимум). На вопрос 18084331 ответишь или так и будешь юлить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:32 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetravпропущено... Предоставить возможность драйверу сесть на аппаратное прерывание таймера. Или снять его от туда. Только не в твоей ВМ реализованной в JVM, а на реальном железе. Друг. Это не Алгоритмическая задача. Здесь нет проблемы алгоритмизации. Я еще раз тебя одёргиваю. Любые задачи сопряжения с внешним миром имеют своё коробочное решение в Java через JNI. Пойми наконец. Если ты ратуешь за архитектурные недостатки Java - ОК. Опиши мне проблему в терминах необходимости и я пойму. Но только не придумывай синтетические постановки где еще JVM не может какой порт прочитать и какую ячейку памяти. Это НЕ проблема алгоритмов. Это ВОПРОС API. Я устал. Снова. Пусть это будет вопрос API и возможности в Яве отключить GC. Но тогда Ява превратится в С++. =) Кроме того, ну как сказать то... Это примерно как научится копать землю лопатой и думать, что вот тут же сядешь за комбайн или экскаватор. Разные условия порождают разные алгоритмы. И в современной Яве ты просто не можешь оказаться в определенных условиях. Но делаешь выводы космического масштаба и космической же... (с). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
White Owl2. Пока ты передергиваешь и перевираешь чужие слова - тебя будут считать врунишкой (как минимум). Считай меня хоть Слава КПСС, который вообще не человек. =))) Но не называй меня так (долгое время). Тогда продолжим общение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravВот первый программист на планете — Ада Лавлейс — программировала на компьютере, который даже не получилось воплотить в железе (могу в деталях ошибаться). Какие уж тут ОС на Си. Дык о том и речь. Ада писала программы для несуществующего реально компьютера задолго до появления Си. То есть изначальный посыл про то, что всё пишется на C/C++ ошибочен. P.S. Раз уж вспомнили первую в мире женщину-программист (и вообще первый в мире программист!), мне также вспомнилось, как американский учёный-физик Ричард Фейнман писал про расчёты атомной бомбы на механических арифмометрах. Операторами этих машинок были девушки. Не, вы представляете себе этот процесс программирования? Берёшь за талию Бетти: "Ты у нас будешь сумматором", - ведёшь её к нужному арифмометру. Берёшь за талию Тутси: "Ты у нас будешь умножителем", - ведёшь её. Эх, вот где было классное программирование! А сейчас - биты, байты, объекты, паттерны... Скукота :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikpetravВот первый программист на планете — Ада Лавлейс — программировала на компьютере, который даже не получилось воплотить в железе (могу в деталях ошибаться). Какие уж тут ОС на Си. Дык о том и речь. Ада писала программы для несуществующего реально компьютера задолго до появления Си. То есть изначальный посыл про то, что всё пишется на C/C++ ошибочен. В современном смысле посыл практически безошибочен. Исключения подтверждают практику. Проект Microsoft Reserch в плане ОС провалился. А Ада была красивой женщиной и без Си. А Бебридж вообще молодец. :) И мы помним историю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:49 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikP.S. Раз уж вспомнили первую в мире женщину-программист (и вообще первый в мире программист!), мне также вспомнилось, как американский учёный-физик Ричард Фейнман писал про расчёты атомной бомбы на механических арифмометрах. Операторами этих машинок были девушки. Не, вы представляете себе этот процесс программирования? Берёшь за талию Бетти: "Ты у нас будешь сумматором", - ведёшь её к нужному арифмометру. Берёшь за талию Тутси: "Ты у нас будешь умножителем", - ведёшь её. Эх, вот где было классное программирование! А сейчас - биты, байты, объекты, паттерны... Скукота :( https://en.wikipedia.org/wiki/Human_computer Так что нет, они все были полноценными компьютерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:54 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravТ.е. там где речь идет о жизни людей Лень искать ссылку (но если припечёт - найду). В Штатах была история с рентгеновским аппаратом, софт для которого был написан на чистом ассемблере. Из-за багов он облучил смертельными дозами немало людей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
White Owl https://en.wikipedia.org/wiki/Human_computer Так что нет, они все были полноценными компьютерами. Ага, действительно. Но, вроде бы, каждая выполняла своё действие и результат передавался дальше по цепочке на карточке. Но не суть. Суть в том, что каждая была полноценной женщиной! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 01:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikpetravТ.е. там где речь идет о жизни людей Лень искать ссылку (но если припечёт - найду). В Штатах была история с рентгеновским аппаратом, софт для которого был написан на чистом ассемблере. Из-за багов он облучил смертельными дозами немало людей. Ассемблер — это тоже не синоним реал-тайма (или я вас неправильно понял?). Реал-тайм — это сочетание алгоритма (в первую очередь) и средства реализации. А уж багов в ассемблерном коде наделать легче чем в С/С++. Поэтому и существуют ОСРВ. ЗЫ: Есть еще история как Windows NT чуть не потопил американский ракетный крейсер. Просто из-за деления на ноль слетело клиентское ПО и у крейсера отключились двигатели. А винда работала нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 01:09 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravmaytonНет мне с этого момента еще интереснее. Ты можешь не бравируя громкими брендами Линуксов дать мне своё определение реал-тайма? Как инженер. Своими словами. Как программист. Есть черный ящик. По ТЗ на его вход подаётся сигнал типа S1 и в ТЗ написано: ответ на S1 не более N долей секунд. В испытаниях на жесткое реальное время, если хотя бы раз лимит времени превышен, то это брак. В испытаниях на мягкое реальное время, иногда черный ящик может запаздывать, но является рабочим ящиком. Только после определенного заданного по ТЗ процента пропусков он становится браком. Чушь. РТ есть гарантия выполнения (в т.ч математическая), а не тесты производитесльности. Мягкого РТ нет - это лапшепедия. Которая, очевидно работает, судя по безграмотности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 01:33 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЧушь. РТ есть гарантия выполнения (в т.ч математическая), а не тесты производитесльности. Мягкого РТ нет - это лапшепедия. Которая, очевидно работает, судя по безграмотности. ПО не нуждается в тестировании и существует математически строгий способ проверки его (ПО) корректности? Как отреагирует наш черный ящик-реального-времени на резкий перепад температур? Что там с процессором случится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 01:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav Постепенно в споре моё утверждение расширилось: любой алгоритм можно описать и запрограммировать на С++, а Ява и C# ограничены виртуальной машиной. Мои оппоненты утверждают: Ява ограничений не имеет в области формального описания алгоритмов. С тех спор и спорим. Ну, давайте, скажите свое определение алгоритма, для начала. Из этого будет ясно, ограничены ли C# с Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 03:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЗимарглЧушь. РТ есть гарантия выполнения (в т.ч математическая), а не тесты производитесльности. Мягкого РТ нет - это лапшепедия. Которая, очевидно работает, судя по безграмотности. ПО не нуждается в тестировании и существует математически строгий способ проверки его (ПО) корректности? Как отреагирует наш черный ящик-реального-времени на резкий перепад температур? Что там с процессором случится? Ты чего то не про то. РТ это только про время исполнения задачи, а не про корректность. В вики почитал бы. Гарантировать фиксированное время исполнения в специализированной ОС достаточно просто - применять шаговые автоматы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 08:51 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012petravИ, точно, лучше конкретно Вам уйти из ветки. Ни кому из ветки уходить не надо ... Но и саблей махать налево и направо и рубить "не нужное" как бы тоже лишнее ... Все таки неужели "словесно блок схемный" стиль описания алгоритмов - лучшее из всех возможностей. Неужели академический мир не создал каких то спецификаций ... создал. к примеру, р-технологии Вельбицкого, окончательно похороненные лет 20 назад, языки спецификаций vdm, rsl и z ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 12:31 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravВладимир2012Все таки неужели "словесно блок схемный" стиль описания алгоритмов - лучшее из всех возможностей. Неужели академический мир не создал каких то спецификаций ... Создавал, что вы! Целый огромный язык создали — Unified Modeling Language . ага, хрень такую. из таких соображений, как вилами по воде, это был переход к древнеегипетским иероглифам, которые отличались от текущей системы записи, что система записывания иероглифами сложнее или равна сложности описываемой модели. Текущая система записи буквами проще любой описываемой модели. Поэтому и не набрал популярности в связи с возвратом в хрень знает какую тьму таракань. Система записи алгоритма и/или спецификаций должна быть буквенная, а не картинками - иероглифами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 12:34 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravКак вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум? Ни какой ВМ при этом не придется создавать. Просто перед описанием алгоритма достаточно пояснить, что java использовалась всего лишь как средство описания алгоритма функционирования диспетчера потоков ... Реализация и описание - разные вещи. Можно хоть на Foxpro то же самое сделать. Самый главный вопрос в данном случае - будет ли описание логики алгоритма с использованием /например java/ выбранного языка "прозрачно". Т.е. смогут ли без труда понять его программисты не знающие java ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 08:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012petravКак вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум? Ни какой ВМ при этом не придется создавать. Просто перед описанием алгоритма достаточно пояснить, что java использовалась всего лишь как средство описания алгоритма функционирования диспетчера потоков ... Реализация и описание - разные вещи. Можно хоть на Foxpro то же самое сделать. Самый главный вопрос в данном случае - будет ли описание логики алгоритма с использованием /например java/ выбранного языка "прозрачно". Т.е. смогут ли без труда понять его программисты не знающие java ... Опять 25-ть. Я уже сто раз говорил: хоть на МК-52, хоть на Яве. Но, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 19:15 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravНо, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования. Семантика union это не алгоритм, а синтаксическая конструкция некоторого языка. Что вы подразумеваете под описанием на java union? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 19:42 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravНо, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования это просто оптимизация, никакой семантики, источник багов если так припёрло - ByteBuffer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 20:06 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012petravНо, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования. Семантика union это не алгоритм, а синтаксическая конструкция некоторого языка. Двунаправленный список — это тоже не алгоритм. Но он бессмысленный без алгоритмов создания и работы со списками. union — не алгоритм, но за ним кроются алгоритмы размещения разнородных данных в одной области памяти. Владимир2012Что вы подразумеваете под описанием на java union? Описание на Яве как это работает. Вот список понятий, которые я предлагаю описать на Яве, что бы это имело смысл: - union. - bit set. - RAII. - Memory pool. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 20:42 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravНо, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования это просто оптимизация, никакой семантики, источник багов если так припёрло - ByteBuffer Есть семантика, есть. По поводу ByteBuffer. Вот я и говорю, что бы на Яве описывать системные алгоритмы придется создавать на яве абстрактную машину. Но опишите семантику union хотя бы с помощью ByteBuffer. Опасного приведения указателей в Яве то нет, как и самих указателей — насколько я знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 20:45 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravсемантику union c/c++ до фортрана -как до Луны раком (EQUIVALENCE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 20:51 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravДвунаправленный список — это тоже не алгоритм. Но он бессмысленный без алгоритмов создания и работы со списками. Алгоритмы не витают в пустынном космосе. Если вы в алгоритме используете понятием "список" и это понятие скажем не общеупотрибетельно, то безусловно перед описанием алгоритма вы должны словесно описать какие новые понятия /объекты/ вы будете использовать и привести набор используемых операций с ними. petrav- bit set. Набор функций. petrav- Memory pool. Описание понятия /объекта/ "Memory pool" и операций для работы с ним ... Ну а как иначе? Все алгоритмы используются для некоторых предметных областей в которых используются некоторый набор объектов и операций над ними ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Очевидно пассажир решает какую-то задачу именно "таким способом" как ему хочется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:05 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Изопропилpetravсемантику union c/c++ до фортрана -как до Луны раком (EQUIVALENCE) А до SQL вообще как до Марса. Напишем компиляторы/интерпритаторы для Фортрана и SQL на С/С++ и всё будет хорошо. Кстати, поясните плиз что такое EQUIVALENCE в Фортране. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:05 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012petravДвунаправленный список — это тоже не алгоритм. Но он бессмысленный без алгоритмов создания и работы со списками. Алгоритмы не витают в пустынном космосе. Если вы в алгоритме используете понятием "список" и это понятие скажем не общеупотрибетельно, то безусловно перед описанием алгоритма вы должны словесно описать какие новые понятия /объекты/ вы будете использовать и привести набор используемых операций с ними. Двунаправленный список — это общеупотребимый термин. Или я вас неправильно понял. Владимир2012petrav- bit set. Набор функций. Опишите же, плиз. Но на Яве. Владимир2012petrav- Memory pool. Описание понятия /объекта/ "Memory pool" и операций для работы с ним ... Boost.Pool если память не подводит. Владимир2012Ну а как иначе? Все алгоритмы используются для некоторых предметных областей в которых используются некоторый набор объектов и операций над ними ... Да, но некоторые языки ограничены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:13 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonОчевидно пассажир решает какую-то задачу именно "таким способом" как ему хочется. Очевидно, что на Яве вы не сможете толково даже описать (не точно реализовать) целый сонм алгоритмов требующих прямой доступ к памяти или требующий высокопроизводительных вычислений. (Без реализации виртуальной машины на Яве). Но продолжаете спорить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:15 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravДвунаправленный список — это общеупотребимый термин. Или я вас неправильно понял Привел вам пример как использовать в алгоритме не общеупотребительные объекты. petravОпишите же, плиз. Но на Яве. Перед алгоритмов достаточно описать набор, используемых в нем "bit set" функций petravДа, но некоторые языки ограничены. Вот скажем в алгоритме использую операцию сравнения двух вселенных. Покажите мне язык в котором такая операция присутствует. Еще раз. Если недостает некоторой выразительности языковых конструкций в алгоритмическом языке, то автор алгоритма может компенсировать это описанием включением перед алгоритмом свойственных для алгоритма объектов и операций над ними ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:28 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravmaytonОчевидно пассажир решает какую-то задачу именно "таким способом" как ему хочется. Очевидно, что на Яве вы не сможете толково даже описать (не точно реализовать) целый сонм алгоритмов требующих прямой доступ к памяти или требующий высокопроизводительных вычислений. (Без реализации виртуальной машины на Яве). Но продолжаете спорить! Да меня это не парит, чувак. Я легко переключусь в JNI и реализую те API которых не хватает. Но я не стану строить идеологии и доказывать ненаучными методами что для Java недоступны описательные возможности некоторых алгоритмов и структур данных. Я тебе привёл операционку написанную на Java но ты видимо не проникся, нечитал или непонял. Печально как-то это всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:33 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravНо продолжаете спорить! Да вы правы. Уже и так и этак пытался вас обратить внимание, что реализация алгоритма и описание алгоритма - разные задачи ... Но похоже мы друг друга не слышим ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012Вот скажем в алгоритме использую операцию сравнения двух вселенных. Покажите мне язык в котором такая операция присутствует. Еще раз. Если недостает некоторой выразительности языковых конструкций в алгоритмическом языке, то автор алгоритма может компенсировать это описанием включением перед алгоритмом свойственных для алгоритма объектов и операций над ними ... Ну так опишите на Яве функции для реализации RAII, например. Пожалуйста! Не надо банальностями сыпать, опишите, запрограммируйте! Кстати, про pool memory это я лишнего сказал — если не добавить возможность размещать разнородные объекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:40 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonЯ тебе привёл операционку написанную на Java но ты видимо не проникся, нечитал или непонял. Печально как-то это всё. Печально что вы меня не читаете. Это мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM другую (внутри) ВМ. Я его первый предложил! Вы пользуетесь моими же аргументами — тогда когда их уясняете с 10-го раза. Это печально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:43 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravНу так опишите на Яве функции для реализации RAII, например. Ну ладно еще разок. Пусть в java нет указателей ..., работы с битами ... А в алгоритме эти операции должны присутствовать. Как быть? Достаточно перед описанием алгоритма привести набор функций который будет использоваться в алгоритме, а на чем он был или будет реализован это уже "третий вопрос" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:49 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012petravНу так опишите на Яве функции для реализации RAII, например. Ну ладно еще разок. Пусть в java нет указателей ..., работы с битами ... А в алгоритме эти операции должны присутствовать. Как быть? Достаточно перед описанием алгоритма привести набор функций который будет использоваться в алгоритме, а на чем он был или будет реализован это уже "третий вопрос" ... Что?! RAII — это не набор битов, это даже не прямой доступ к памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 21:55 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravПожалуйста! Не надо банальностями сыпать, опишите, запрограммируйте! О чем у нас речь. Об описании алгоритмов или их реализации? Если не ошибаюсь "стержневая" мысль topic об ограниченности языков как средства описания алгоритмов /но не реализации/... У вас все время идет упор на реализацию алгоритмов ... Это как бы совсем другая плоскость обсуждения ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 22:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav Что?! RAII — это не набор битов, это даже не прямой доступ к памяти. М-да - "я пас". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 22:02 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012petravПожалуйста! Не надо банальностями сыпать, опишите, запрограммируйте! О чем у нас речь. Об описании алгоритмов или их реализации? Если не ошибаюсь "стержневая" мысль topic об ограниченности языков как средства описания алгоритмов /но не реализации/... У вас все время идет упор на реализацию алгоритмов ... Это как бы совсем другая плоскость обсуждения ... Ну так опишите RAII в синтаксисе Явы. Хотя бы опишите. Можете написать прототипы функций и пример алгоритма в 5-6-ть строчек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 22:07 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravКстати, поясните плиз что такое EQUIVALENCE в Фортране. http://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn9b/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 22:32 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЭто мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM для описания алгоритмов JVM не нужна. Требуется описать распределение памяти? byte[] memory= new byte[poolSize]; и вперёд - списки, битовые карты и т д ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 22:38 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Коллеги. Кто из вас считает что т.н. Resource Acquisition Is Initialization (RAII) является принципиально нереализуемой сущностью в НЕ-С/C++ языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 22:49 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravЭто мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM для описания алгоритмов JVM не нужна. Требуется описать распределение памяти? byte[] memory= new byte[poolSize]; и вперёд - списки, битовые карты и т д Окей. А теперь размести в этом массиве полноценный Ява-объект, так что бы в этом массиве расположение объекта начиналось с 10-го, например, байта. Уточнение: никаких предположений о типах полей данных этого объекта делать не надо. Управление объектом по указателю должно быть полноценным (обычный синтаксис, вызов конструктора и т.д.). Так же для этого объекта нужно вызвать деструктор в тот момент когда нам будет нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 22:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимарглpetrav, РТФМ http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html Это уже всё многократно обсуждалось. Это аналог using в C#. Полноценным RAII это не является ни там, ни там. Google it: "C# RAII", "Java RAII". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravА теперь размести в этом массиве полноценный Ява-объектэто не требуется - описываем алгоритмы распределения памяти. и никакие Java объекты там размещать не требуется. Неужели не доходит, что описание алгоритма не равно конкретной реализации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:02 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonКоллеги. Кто из вас считает что т.н. Resource Acquisition Is Initialization (RAII) является принципиально нереализуемой сущностью в НЕ-С/C++ языках. RAII даже в С не реализуется. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Но могу быть другие языки с поддержкой RAII. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravА теперь размести в этом массиве полноценный Ява-объектэто не требуется - описываем алгоритмы распределения памяти. и никакие Java объекты там размещать не требуется. Неужели не доходит, что описание алгоритма не равно конкретной реализации? А если мне по алгоритму нужно там разместить объект? Например описываю логику pool memory с разнородными объектами? Ну так можно описывать алгоритмы вообще без ООП (даже без эмуляции как на С). Я про то и говорю, что в ограниченных языках ты многое не то, что реализовать не сможешь, даже описать не сможешь по человечески. Ты уже от ООП отказываешься. Машина Тьюринга вообще универсальна. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravТы уже от ООП отказываешься есть масса мест , где ООП неуместно (ядро ОС в частности) petravМашина Тьюринга вообще универсальна. =) алгоритмы сортировки, поиска, распределения памяти, планирования процессов - вряд ли осмыслено в терминах машины Тьюринга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:21 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav, слушай дружище. Ну вот на сях написаны ядра операционок, DBMS, игры и некислая туча прошивок для сетевого оборудования. Может этот т.н. RAII является "птичьим молоком" и вобщем-то не нужен? Я вместо доказательства или опровержения нужности или необходимости этой замечательной идеомы ссылаюсь на знакомую нам всем практику. Дэннис Ричи (царство ему небесное) тоже видимо был обречён кодить свои Юниксы без RAII в рамках изестных нам limitations. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:27 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravТы уже от ООП отказываешься есть масса мест , где ООП неуместно (ядро ОС в частности) Ну ты и пойми, что описывать алгоритмы ядра ОС (даже просто описывать) на Яве еще более неуместно и никто этого не делает. ИзопропилpetravМашина Тьюринга вообще универсальна. =) алгоритмы сортировки, поиска, распределения памяти, планирования процессов - вряд ли осмыслено в терминах машины Тьюринга Ну почему. Сколько там команд в машине Тьюринга? 5-6-10? Пишем макросы, постепенно доходим до ассемблера 0086 процессора, там уже С можно запустить, потом С++, потом реализация Явы. =) Попутно реализовываем на С/С++ все системные алгоритмы, оптимизирующие алгоритмы системные. А там уже и Винду можно запускать. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:32 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravНу почему. Сколько там команд в машине Тьюринга? 5-6-10? Пишем макросы, постепенно доходим до ассемблера 0086 процессора, там уже С можно запустить, потом С++, потом реализация Явы. =) Попутно реализовываем на С/С++ все системные алгоритмы, оптимизирующие алгоритмы системные. А там уже и Винду можно запускать. =) я как нибудь Pascal и Java обойдусь. для описания. а на чём кодировать - вопрос отдельный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravНу почему. Сколько там команд в машине Тьюринга? 5-6-10? Пишем макросы, постепенно доходим до ассемблера 0086 процессора, там уже С можно запустить, потом С++, потом реализация Явы. =) Попутно реализовываем на С/С++ все системные алгоритмы, оптимизирующие алгоритмы системные. А там уже и Винду можно запускать. =) google.ru => ограниченности языков как средства описания алгоритмов Вот например интересная статья РАЗРАБОТКА ГРАФИЧЕСКОГО ФОРМАЛИЗМА ДЛЯ ОПИСАНИЯ АЛГОРИТМОВ В ПРОЦЕСС-ОРИЕНТИРОВАННОМ СТИЛЕ http://www.nsu.ru/xmlui/bitstream/handle/nsu/553/04.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav Сколько там команд в машине Тьюринга? 5-6-10? Ты даже этого не знаешь? Эх ты, тролль недоучка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:44 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetrav, слушай дружище. Ну вот на сях написаны ядра операционок, DBMS, игры и некислая туча прошивок для сетевого оборудования. Может этот т.н. RAII является "птичьим молоком" и вобщем-то не нужен? Я вместо доказательства или опровержения нужности или необходимости этой замечательной идеомы ссылаюсь на знакомую нам всем практику. Дэннис Ричи (царство ему небесное) тоже видимо был обречён кодить свои Юниксы без RAII в рамках изестных нам limitations. Жить можно и без RAII, но он кардинально повышает качество кода на С++. Ричи писал на С без RAII, да. Если отказываться, тогда придется в С++ отказаться от исключений. Либо не отказываться, но тогда код на С++ станет оооочень сложно писать — почти невозможно. Каждый вызов функции придется обрамлять try/catch, вручную следить за инициализированными локальными переменными (с захватом ресурсов). И много другое. Можно и от деструкторов отказаться. Ведь RAII — это прямое следствие детерминированного вызова деструкторов. Можно поступить как в Яве: отказаться от полноценного RAII и добавить сборщик мусора. Но тогда придется отказаться от производительности С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:46 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
MyClass *p = new MyClass(); какой такой RAII ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
White Owlpetrav Сколько там команд в машине Тьюринга? 5-6-10? Ты даже этого не знаешь? Эх ты, тролль недоучка... А ты всё еще хамишь? Я эту машину изучал в школе. Лет 20-ть назад. Помню, что бесконечная лента с ячейками чисел, тележка двигается вправо и влево, считывает, записывает, обменивает данные. Как реализовываются условные действия - не помню. Так что извини. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилMyClass *p = new MyClass(); какой такой RAII ? Такой: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:52 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravА теперь размести в этом массиве полноценный Ява-объект, так что бы в этом массиве расположение объекта начиналось с 10-го, например, байта. Уточнение: никаких предположений о типах полей данных этого объекта делать не надо. Управление объектом по указателю должно быть полноценным (обычный синтаксис, вызов конструктора и т.д.). Так же для этого объекта нужно вызвать деструктор в тот момент когда нам будет нужно. Чел я в ответ на твои посты раз 5 берусь что-то писать. Потом откладываю. Потом снова начинаю писать. Вобщем мы как-то слишком ходим по кругу. Давай для начала еще немного прояснений. Прояснение первое. В Java объекты аллоцируются по адресам кратным некому числу. Это зависит от модели памяти. Обычно чем крупнее Xmx тем больше гранула. Поэтому располагать объект с "10-го" байта нет возможности. Нет возможности фиксировать АДРЕСА в принципе. JMM предполагает некую ротацию объектов. Это разумная плата за плюшки от JMM. И к этому пришли путём эволюции. Тоесть путём переосмысления всего исторического наследия информационной эпохи начиная от LISP-моделей. Модель памяти которая использует GC будет использоваться всё больше и больше. Это вопрос времени. Новое время диктует нам свои условия. Больше КПД разработки. Больше управляемости. Второе проясннение . Идя тебе навстречу. И решая некоторые задачи алгоритмизации я могу выделить отдельную область памяти как вектор байт (new byte[...]) и рассматривать ее как область для сериализации объектов. Строя подобные "слои" персистентности я получаю в некую ПСЕВДО-адресную арифметику. Разумеется мне придётся реализовывать некий менеджмент по учоту свободной памяти. Но в ПРИНЦИПЕ это решаемо. Я уж не знаю для каких тебе задач это нужно но это в Java РЕШАЕМО. Фраза "никаких предположений о типах полей данных этого объекта делать не надо" - требует пояснений или уточнений. Лучше в качестве примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2015, 23:53 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravИзопропилMyClass *p = new MyClass(); какой такой RAII ? Такой: Код: plaintext 1. 2. а кто будет следить за объектами, с временем жизни несколько дольше, чем вызов функции, создавшей объект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЯ эту машину изучал в школе. Лет 20-ть назад. Помню, что бесконечная лента с ячейками чисел, тележка двигается вправо и влево, считывает, записывает, обменивает данные. Как реализовываются условные действия - не помню. Так что извини.Не извиню. Если ты не знаешь базы, то не можешь рассуждать о более продвинутых вещах. Не, можешь кончено, но у тебя всегда будет получаться бред типа того что ты пишешь в этом топике. Ты конечно мастерски держишь флейм, подменяешь понятия, делаешь обобщения на пустом месте, требуешь от оппонентов чего-то мифического и никому не нужного. В этом ты молодец. Тут я снимаю шляпу. Молодец. Давно я не видел такого талантливого тролля. Вот только базу стоит подучить. Более качественный флейм сможешь вести, тебя сложнее будет поймать. А то сейчас ты слишком уж часто делаешь бредовые заявления. Уворачиваешься от ответа ты конечно хорошо, но более высоким классом было бы не давать повода оппонентам на тыканье пальцем: "тут ты не прав". Было бы у тебя образование, сумел бы замаскировать софизмы под наукоемкие фразы, а так.... Тебя слишком легко поймать. В общем, талант у тебя есть. Лет через пять может и пробьешься в большие люди. Дерзай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravМожно поступить как в Яве: отказаться от полноценного RAII и добавить сборщик мусора. Но тогда придется отказаться от производительности С++. Ты знаешь. Я устал. Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в 1) I/O 2) Network/Http/Rest/Soap 3) Доступ к БД/Оптимизатор запросов 4) Блокировки разделяемых ресурсов среды. 5) Неверный алгоритм или последовательность шагов. Ошибки project-owner или аналитика при описании задачи. Производительность собственно бинарного кода очень редко оказывает сильное влияние. Ну или у меня подобных задач было мало. А когда проблема действительно находилась и после анализа профайлером удалялась - на верх снова поднимались проблемы (1),(2),...e.t.c. Вот с периодом в 6-10 месяцев в Программинге или в Сях или еще бох весь в каком Питоне всплывает очередной топик на тему Как в оперативке отсортировать массив OVER 2млрд целых чисел? Я вскакиваю. Хватаюсь за голову. Пишу. Ребята пятак вашу распротак! Не существует такой постановки. В принципе. Даже зайдя со стороны входных данных. Эти 2 млрд как там появились? Они что телепортировались? А даже если я сделаю чёрный ящик который их сортирует за 1 мс. - Сколько времени я буду публиковать резалт? Куда? Юзайте мать вашу БД! Юзайте БерклиДБ + TreeSet. Юзайте коллекцию класса TreeSet. Не сортируйте массивы! Это пустая трата мегафлопов! Это тупая олимпиадная задачка которую придумали чортовы теоретеки. Она в реальности не имеет прототипа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:15 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonФраза "никаких предположений о типах полей данных этого объекта делать не надо" - требует пояснений или уточнений. Лучше в качестве примера. Предположим нам нужно очень часто создавать и уничтожать объекты типов Т1, Т2 и Т3. Как можно производительнее и с памятью у нас чем — больше тем лучше, сожрем и 16Гб оперативки. Универсальная реализация динамической памяти хороша тем, что может размещать в памяти объекты разных размеров. Но в том то и слабость в производительности. Если писать менеджер динамической памяти, который будет знать, что все объекты имеют одинаковый размер, то он будет работать гораздо быстрее. И так получилось, что все Т1, Т2 и Т3 имеют примерно одинаковый размер. Не больше 512 байт. Необходимо реализовать свой менеджер памяти. Безопасный в работе с типами. С вызовом конструкторов, деструкторов и с полноценным синтаксисом. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Класс Pool у нас универсальный и ничего не должен знать о типах Т1... В следующем проекте будет Т10 например. Так же желательно класс Pool параметризовать алгоритмом поиска свободной памяти и освобождения памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:24 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetravМожно поступить как в Яве: отказаться от полноценного RAII и добавить сборщик мусора. Но тогда придется отказаться от производительности С++. Ты знаешь. Я устал. Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в 1) I/O 2) Network/Http/Rest/Soap 3) Доступ к БД/Оптимизатор запросов 4) Блокировки разделяемых ресурсов среды. 5) Неверный алгоритм или последовательность шагов. Ошибки project-owner или аналитика при описании задачи. Производительность собственно бинарного кода очень редко оказывает сильное влияние. Ну или у меня подобных задач было мало. А когда проблема действительно находилась и после анализа профайлером удалялась - на верх снова поднимались проблемы (1),(2),...e.t.c. Елки палки!!! Так мы и НЕ ГОВОРИМ про энтерпайз! У нас ДРУГАЯ тема разговоров! А так с твоими словами согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:28 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Прошу прощения не "500 количество памяти под зарезервированные объекты", 500 - количество объектов для которых нужно память резервировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:30 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
White OwlТебя слишком легко поймать. Ну у тебя, кроме «ты дурак», пока ничего не получилось в плане «поймать». :) Свои посты-то перечитай... Кроме того, я и бегать ни от кого не хочу. Это твои желания ловить кого-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:34 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav, Код: plaintext 1. (покачиваясь на стуле) Не знаю.... Не нравится мне эта постановка. Я-бы со старта выделил 3 пустых коллекции для T1, T2, T3 и использовал их по мере роста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:40 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Изопропилpetravпропущено... Такой: Код: plaintext 1. 2. а кто будет следить за объектами, с временем жизни несколько дольше, чем вызов функции, создавшей объект? Обычно всё начинается с 1-10 объектов созданных в main() (или глобальные, что хуже), а уж они через указатели (shared_ptr) и контролируют по цепочке всё остальное. Точнее не по цепочке, а в виде дерева размещенных в ОЗУ объектов. Если сеть, то weak_ptr. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetrav, Код: plaintext 1. (покачиваясь на стуле) Не знаю.... Не нравится мне эта постановка. Я-бы со старта выделил 3 пустых коллекции для T1, T2, T3 и использовал их по мере роста. Коллекция? std::set? Ну тут совсем не подходит. В коллекцию мы кладем значения, проверяем что они там есть, удаляем. Ну... не знаю как объяснить. Ведь у коллекции и динамического вектора ведь разное назначение? Я уж не говорю про какое-нибудь бинарное дерево поиска. Ну вот нам нужно выделять и освобождать объекты. Нам нужна логика динамической памяти оптимизированной под размещение объектов не больше заданной длинны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:45 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravТак мы и НЕ ГОВОРИМ про энтерпайз! У нас ДРУГАЯ тема разговоров! ну так уточните тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 08:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravКоллекция? std::set? Ну тут совсем не подходит. В коллекцию мы кладем значения, проверяем что они там есть, удаляем. Ну... не знаю как объяснить. Ведь у коллекции и динамического вектора ведь разное назначение? Я уж не говорю про какое-нибудь бинарное дерево поиска. Ну вот нам нужно выделять и освобождать объекты. Нам нужна логика динамической памяти оптимизированной под размещение объектов не больше заданной длинны. Ты, как мне кажется "со старта" решаешь несуществующие проблемы. Ты говоришь - нам дескыть нужна логика динамической памяти .. тра-лала ... не более заданой длины. Я говорю - не нужна. Твоя задача решается в лоб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 08:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonТы знаешь. Я устал. Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в 1) I/O ... Производительность собственно бинарного кода очень редко оказывает сильное влияние. Ну или у меня подобных задач было мало. А когда проблема действительно находилась и после анализа профайлером удалялась - на верх снова поднимались проблемы (1),(2),...e.t.c. Есть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Присединяюсь к ВайтОвлу, Петрав игнорировать - ни квалификации, ни последовательности в выводах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 11:25 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Как-то сумбурно всё. При чём здесь свопинг непонятно. Кто настраивал конфигурацию? Кто выставлял настройки heap? При чём здесь Питон? Петрав игнорировать - ни квалификации, ни последовательности в выводах. Не согласен. Петрав несёт свой тезис. Просто он его никак не может озвучить. С ним всё время мы сворачиваем на какую-то узкую самолётную предметную область где нужно считать наносекунды на malloc и кодить алгоритмы только на определённых языках. Я с этим не согласен. И жду конкретики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 11:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Присединяюсь к ВайтОвлу, Петрав игнорировать - ни квалификации, ни последовательности в выводах. Есть золотое правило - 90% производительности занимает 10% кода. Сэкономив время на разработке и отладке (Java и C#), можно более серьезно заняться оптимизацией этих 10% - от переработки алгоритма до написании (если уж очень критично) конкретной процедуры на asm. Впрочем последнее редко бывает нужным - разработчики C# и Java серьезно поработали над производительностью стандартных библиотек. Что до жирных фреймворков, то это тоже не совсем так. Неумерное потребление ресурсов вызвано обычно соответствующим отношением программистов к ним. А некоторые даже не догадываются, что некоторые объекты (использующие внешние ресурсы) нужно освобождать принудительно. Причем проблема неумеренного потребления ресурсов браузером сайтами на порядок актуальнее, но никто не парится на эту тему. Увы. По драйверам. Встречался с драйвером, написанным на Delphi. Работал как часы. Никаких проблем, даже на самых медленных машинах. Понятно, что формочек и компонентиков там не было. Не вижу, почему бы там была проблема с C# и Java, хотя с com-портами на этих языках не работал. Понятно, что драйвер видеокарты надо писать на asm и C (и то, там куча формочек с настройками - пиши на чем хочешь), но такого софта 0,001% от всего ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 11:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Как-то сумбурно всё. При чём здесь свопинг непонятно. Кто настраивал конфигурацию? Кто выставлял настройки heap? При чём здесь Питон? Эмм. Да, ща проясню. Речь про производительность. По прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 раза, не больше, но: а) Простейшая задач на Яве или дНете сколько мегабайт памяти жрет при старте? Соответственно старт долгий. б) дНет полностью в память не грузится при старте - в программе при обращении к какой то функциональности идет подгрузка (за Яву тут не скажу, от ОС-платформы может зависеть). В принципе мониторингом это видно. А еще лучше видно лаги при открытии нового окошка в какой-нибуть приблуде, типа той же виз.студии >= 2010. в) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 20:02 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonПетрав несёт свой тезис. Просто он его никак не может озвучить. С ним всё время мы сворачиваем на какую-то узкую самолётную предметную область где нужно считать наносекунды на malloc и кодить алгоритмы только на определённых языках. Я с этим не согласен. И жду конкретики. Проблема нашего взаимопонимания кроется в том, что ты рассуждаешь исключительно как разработчик энтерпрайз решений. Ты мыслишь в терминах оптимизатора запросов, нормализации БД, денормализации БД, пулов коннкекшинов и потоков, создания API к своим веб-приложениям, вопросов кластеризации и прочего маштабирования. Т.е. ты думаешь исключительно как high level enterprise разработчик. В доказательство твоя цитата: «Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в». Ну так и я устал. Причем ты не разработчик базовых решений — не разработчик СУБД (SQL, MongoDB, например), не разрабатываешь ОС или Web-сервера (IIS, Apache). Ты даже отрицаешь алгоритмы сортировки — конечно, обычно это для тебя делает сервер БД — достаточно грамотно спроектировать структуру БД. А ведь подавляющее число этих технологий (ОС, СУБД, Веб-серверы, компиляторы, веб-браузеры и т.д.) написаны на С/С++ и их разработчики сталкиваются с проблемами, которые ты считаешь не нужными (тебе => и всем остальным). Всё остальное ты отрицаешь как не нужное (или очень узкое). А именно: - Высокопроизводительные расчеты (наука и техника — моделирование). - Реальное время (авиация, автомобилестроение, станкостроение, космос). - Ограниченные вычислительные ресурсы (встраиваемые системы, приборостроение). - ОС, драйвера, СУБД, веб-сервера, веб-браузеры. Какую конкретику ты хочешь? Вот я тебе ставлю задачу описать и разработать наш класс Pool<>, но с максимальной производительностью. Ответ: производительность не нужна, напишу на встроенных в Яву коллекциях. Я тебе предлагаю напиши на Яве union. Ты мне: мне API не хватает. Ну так хотя бы опиши на Яве парадигму RAII. Ответ: Денису Ричи было не нужно и мне не нужно. Ну скачай исходники MySQL, посмотри алгоритмы обслуживания индексов — там 100% прямое манипулирование памятью. Опиши на Яве, Реализуй на Яве, сравни производительность. Реализуй на Яве разряженные матрицы и операции с ними. Сравни с производительностью Boost.uBLAST. И ты поймешь, что не то что реализовывать на Яве было не нужно, а даже и описывать. :) PS: Сказать подробно чем я занимаюсь на работе — я не могу. В России есть заводы где даже сотовые телефоны на проходной сдают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 21:16 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav- Высокопроизводительные расчеты (наука и техника — моделирование). - Реальное время (авиация, автомобилестроение, станкостроение, космос). - Ограниченные вычислительные ресурсы (встраиваемые системы, приборостроение). - ОС, драйвера, СУБД, веб-сервера, веб-браузеры. и на койхер здесь везде ++ ? petravСказать подробно чем я занимаюсь на работе — я не могу был бы на улице 1979 год - поверил бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:10 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravСказать подробно чем я занимаюсь на работе — я не могу был бы на улице 1979 год - поверил бы А почему 79-й, а не 37-й? Я ж не про шарашки рассказывал. Или ты родился в 79-м и веришь только про этот год? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:21 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravА почему 79-й, а не 37-й? Я ж не про шарашки рассказывал. тогда откуда столько секретности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:26 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravА почему 79-й, а не 37-й? Я ж не про шарашки рассказывал. тогда откуда столько секретности? В нашей стране куча режимных предприятий. Просто сам факт работы на нём скрывать глупо — все ж через проходную входят и выходят каждый день. От меня требуют конкретики, ну не могу я что-то абстрактное про ракетостроение рассказать, например. Потому что не знаю. И не имею к нему отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:31 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravСказать подробно чем я занимаюсь на работе — я не могу. а подробно не надо веб-серверы пишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravСказать подробно чем я занимаюсь на работе — я не могу. а подробно не надо веб-серверы пишешь? Нет. Авиационная промышленность. Ничего исключительного или даже особо секретного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Ого тут букв. Ну ладно. Буду думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:52 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravПечально что вы меня не читаете. Это мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM другую (внутри)Вы бы, мопвашуять, с вопрос ознакомились, что ли ... Технически JVM это совершенно обычная динамически компонуемая библиотека, экспортирующая набор точек входа. Соглашения по вызову - JNI. Если имеющихся экспортов недостаточно для реализации какой-то особо забубённой задачи - пишется ещё одна динамически компонуемая библиотека, которая грузится и используется. Никакой "виртуальной машины внутри виртуальной машины" не делается - решается "чиста канкретная задача". С абстрагированием ситуация несколько иная. Абстрагирование - необходимо, т.к. иначе идёт лесом переносимость с платформы на платформу. Соответственно, когда появится класс задач, где "кровь из носу" требуется без дополнительных прослоек - кто-то сядет, придумает и API и реализацию. Не исключено, что и то и другое будет удачным, а класс задач - очень востребованным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 02:44 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглПо прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 разаИз пальца высосали?а) Простейшая задач на Яве или дНете сколько мегабайт памяти жрет при старте? Соответственно старт долгий.Пипец ... Есть реальная система, которая обслуживает от двухсот до четырёхсот пользователей в течении рабочего дня. Какая половая разница, сколько "жрёт" эта система на старте, если выполняя полезную работу она занимает столько места, сколько требуют обрабатываемые данные? Какая половая разница, сколько секунд она стартует, если при нормальной работе она вообще не должна перезапускаться?в) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет.Когда мне потребуется парой гигабайт орудовать - питон останется таким же лёгким и быстрым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 02:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Мне знакома подобная риторика. Обычно так пишут люди которые плохо знают Java. Безусловно memory footprint существует. Более того он существуюет в любой runtime или платформе которая не является stand-alone приложением собранном на асме. По поводу интерпретаций и питонов. Я предлагаю тебе подумать над термином HotSpot. Почитать что такое вообще "hot spots" (горячие места) и каким образом Java-среда поступает c фрагментами кода которые исполняет первый раз. P.S. Мне сложно общасться с Анонимосами. Вас много Зимарглов а я один. Прошу тебя залогонься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 08:13 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимарглв) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет. Подобный сравнительный тест с тремя мегабайтами - полная профанация. Надеюсь вы понимаете что нельзя сравнивать килограммы с метрами. "3Мб памяти и Потому нет лагов"... это не суждения инженера. Я тоже люблю устраивать сравнения и бенчмарки. Но к ним нужно готовиться! Нужно собрать всеобъемлющие факты. Нельзя просто выпятить несколько фактов и поставить их во главу угла. Я к сожалению не знаком с ЯП Python и платформой. И я не готов комментировать 3 мегабайта. Но я-бы подошёл более шИроко. Не так упрощённо как вы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 08:25 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЗимарглПо прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 разаИз пальца высосали? Последний тезис интересен. К слову на сегодняшний день и у меня совершенно нет подобного индекса производительности. С вашего позволения коллеги я до Тяпничного топика подумаю над семейством сравнительных тестов для C++ (gcc/visual c) Java .Net В категориях CPU(computing), Memory Diving, I/O (диск, сетевые сокеты). Всего должно быть 9 штук оносительных индексов производительности. Почему относительных? Ну возможно потому что за единицу мы будем просто брать лучший. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 08:37 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxЧто до жирных фреймворков, то это тоже не совсем так. Неумерное потребление ресурсов вызвано обычно соответствующим отношением программистов к ним. А некоторые даже не догадываются, что некоторые объекты (использующие внешние ресурсы) нужно освобождать принудительно. +1 Пример из прошлого опыта: работал в одной конторке где в 1с7.7 постоянно трудилось около полусотни юзверей. Конфигурация самописная. Сидели все в терминале. Юзвери плевались на тормоза. Админ постоянно просил 50-100 килобаксов на очередной мегасервер. А программерам было лень оптимизациями заниматься. Например банально лень упихать отчет чтобы был шириной с лист бумаги. Зачем этот гимор с вымерянием колонок если есть галка "Подогнать под ширину листа", а то что эта подгонка неплохо нагружала проц при каждом формировании отчета им было фиолетово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 08:53 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravПричем ты не разработчик базовых решений — не разработчик СУБД (SQL, MongoDB, например), не разрабатываешь ОС или Web-сервера (IIS, Apache). Ты даже отрицаешь алгоритмы сортировки — конечно, обычно это для тебя делает сервер БД — достаточно грамотно спроектировать структуру БД. А ведь подавляющее число этих технологий (ОС, СУБД, Веб-серверы, компиляторы, веб-браузеры и т.д.) написаны на С/С++ и их разработчики сталкиваются с проблемами, которые ты считаешь не нужными (тебе => и всем остальным). Всё остальное ты отрицаешь как не нужное (или очень узкое). А именно: - Высокопроизводительные расчеты (наука и техника — моделирование). - Реальное время (авиация, автомобилестроение, станкостроение, космос). - Ограниченные вычислительные ресурсы (встраиваемые системы, приборостроение). - ОС, драйвера, СУБД, веб-сервера, веб-браузеры. Дружище. Я не знаю с какими задачами ты сталкиваешся. Может ваш авиа-пром клепает свои DBMS и операционки. Поэтому мне (и как я понял другим читателям топика) трудно влезть тебе в мозг и понять что у тебя за трудности и проблемы по работе. Не спеши делать обо мне преждевременные суждения. Почитай мои посты ранее и ты поймёшь что ты не прав добавляя мне слова и тезисы которые я никогда не говорил. Я всегда был человеком науки. У меня два высших. По первому я - связист. Спец (к сожалению) по координатным АТС и Квази-электоронным станциям которых к сожалению уже нет. По второму я - чистый software инженер. Донецкий национальный институт. Реал-тайм для меня остался в прошлом когда я в 16 лет написал на Assembler для ZX-Spectrum утилиту которая записывает и воспроизводит голос. Мне приш лось учитывать длину мнемокники в тактах чтобы добиться стабилизации ИКМ звука. Мне приходилось держать в руке паяльник и я тебя уверяю что нет в электрике такого места куда-бы я уже не влезал для того чтобы фиксить свои собственные хотелки. В универе я плотно интересовался цифровой обработкой сигналов. Мой дипломный был кажется на тему фильтров Чебышевы и Баттерворта. Я техно фан и техно-фрик. Мой отец - бывший радио-любитель КВ-шник и влил мне в мозг достаточно большую БД знаний из области радио-волн. Схему детекторного радио-приёмника я хоть щас тебе нарисую с закрытими глазами и расскажу как она работает. У меня по работе достаточно хорошо поставленный технический слог. Я иногда выполняю функции аналитика и пишу ТЗ. (Не так как в этом форуме. Здесь я вечно спешу и делаю ляпы). Веду базы знаний и организовываю внутренние курсы обучения для корпорации. Поэтому не спеши дружище. Не спеши. У нас с тобой еще целая вселенная и миллиард лет пока светит солнце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 09:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Вопрос ко всем. Как вы /"Вы" с большой буквы для тщеславных. Как по мне достаточно "вы" / относитесь к технологиям создания программ с помощью с помощью графических блок-схем ... Как по мне очень привлекательно. То что uml широко не прижился /на мой взгляд/ отражает тот факт, что разработчики похоже не уловили "изюминку" этой технологи. PS: Sorry. Реально с uml не работал /но ведь он не "прижился" .../. Хотелось разработать с uml небольшой проект. Какой soft посоветуете? Прошелся по сайтам с тематикой uml, а там бизнес блок-схемы и много трепа "высокого полета". Печаль ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 09:29 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonBasil A. Sidorovпропущено... Из пальца высосали? Последний тезис интересен. К слову на сегодняшний день и у меня совершенно нет подобного индекса производительности. С вашего позволения коллеги я до Тяпничного топика подумаю над семейством сравнительных тестов для C++ (gcc/visual c) Java .Net В категориях CPU(computing), Memory Diving, I/O (диск, сетевые сокеты). Всего должно быть 9 штук оносительных индексов производительности. Почему относительных? Ну возможно потому что за единицу мы будем просто брать лучший. Ну насколько я помню, ты ни разу так ничего такого и не сделал. Стоит уйти с форума лет на 5, уже и пароль требуют =) Высосано не из пальца, а из Инернетов. Я смотрел много тем разных тестов. Все конечно недостоверно, т.к. например тесты скорости дНета микрософтом "запрещены". Тем не менее они в 4й версии подтянулись. Старые ссылки: http://www.sql.ru/forum/412782-1/benchmarki-c-c-java-delphi http://www.sql.ru/forum/776019-1/optimiziruushhie-kompilyatory Basil A. SidorovЗимарглПо прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 разаИз пальца высосали?а) Простейшая задач на Яве или дНете сколько мегабайт памяти жрет при старте? Соответственно старт долгий.Пипец ... Есть реальная система, которая обслуживает от двухсот до четырёхсот пользователей в течении рабочего дня. Какая половая разница, сколько "жрёт" эта система на старте, если выполняя полезную работу она занимает столько места, сколько требуют обрабатываемые данные? Какая половая разница, сколько секунд она стартует, если при нормальной работе она вообще не должна перезапускаться?в) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет.Когда мне потребуется парой гигабайт орудовать - питон останется таким же лёгким и быстрым? Питон быстрый только на встроенных функциях, которые сишные. Вопрос половой разницы интересный. Я считаю, что -если размер обрабатываемых данных в памяти существенно больше кода в памяти, то на сваппинг можно забить -в остальных случаях - объем кода имеет значение в двух больных местах - вымывании кэша процессоров и page faults Как правило, будет выполнятся "в остальных случаях", т.к. памяти много не бывает и задача редко бывает одна. Различное кэширование, что [виртуальной] памяти ОС, что кода хотспот-машинами дает только определенный выигрыш, но не лечит проблемы в целом. Лучше день потерять, а потом за 5минут долететь(с) Но день то уже потерян. Хотспоты отлично себя показывают только на всяких синтетических тестах типа цикла ф=ф+1 =) Для тех кто умеет и хочет потестировать нужно для дНета и Явы: -на разных задачах сравнить футпринт размещения на диске и в оперативной памяти всего фреймворка. -оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче. -засечь page faults при различных задачах (разнообразное использование фреймворка.vs.много обрабатываемых данных) по мере занятости памяти системы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 10:17 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл-оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче. с документацией лучше сначала ознакомиться нужно - того гляди - до тестирования дело не дойдёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 10:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилЗимаргл-оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче. с документацией лучше сначала ознакомиться нужно - того гляди - до тестирования дело не дойдёт Кидай ссылки, а лучше на статьи практиков их подтверждающие. Вендоры часто умалчивают ненужные им детали. Желательно на не очень старые версии и на разных платформах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 10:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглНу насколько я помню, ты ни разу так ничего такого и не сделал. Стоит уйти с форума лет на 5, уже и пароль требуют =) Регайся лентяй. А насчёт того что я где-то дескыть не сделал - всего не могу помнить. Да и нет у меня обязательств кроме редкого модерства. Just for fun здесь нахожусь как и все прочие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 10:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Ну насколько я помню, ты ни разу так ничего такого и не сделал. Стоит уйти с форума лет на 5, уже и пароль требуют =) Высосано не из пальца, а из Инернетов. Я смотрел много тем разных тестов. Все конечно недостоверно, т.к. например тесты скорости дНета микрософтом "запрещены". Тем не менее они в 4й версии подтянулись. Старые ссылки: http://www.sql.ru/forum/412782-1/benchmarki-c-c-java-delphi http://www.sql.ru/forum/776019-1/optimiziruushhie-kompilyatory Топики датируются 2007-2010 годом. С того времени много воды утекло. Целая эпоха для некоторых технологий. Предлагаю не смотреть на их результаты. Кстати по пункту 1 (CPU) я уже нашёл подходящий тест. Это алгоритм рендеринга 3D-графики на С++ . Достаточно не сложный чтобы портировать его на шарпы и Java. Он практически не использует память. Но зато плотен в вещественных вычислениях. Ближе к пятнице я оформлю его как ТЗ в своём тяпничном сообщении. На объективность в плане ВЫБОРА алгоритма я не претендую. Рад буду услышать предложения и дополнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 11:08 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЭмм. Да, ща проясню. Речь про производительность. По прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 раза, не больше, но: а) Простейшая задач на Яве или дНете сколько мегабайт памяти жрет при старте? Соответственно старт долгий. б) дНет полностью в память не грузится при старте - в программе при обращении к какой то функциональности идет подгрузка (за Яву тут не скажу, от ОС-платформы может зависеть). В принципе мониторингом это видно. А еще лучше видно лаги при открытии нового окошка в какой-нибуть приблуде, типа той же виз.студии >= 2010. в) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет. .Net (например) не проигрывает С++ На 99.9 % реальных задач. Серьезные задачи - это обработка данных и сложные вычисления. Для этого есть стандартные библиотеки, никто массивы вручную не сортирует. Память под данные выделяются строго в соответствии с необходимостью. Ничего лишнего. Если у кого-то кривой код, при котором постоянно создаются миллионы объектов и висят в памяти, пока их не уберет сборщик - это не вина .NET. Для Java - аналогично, все "детские болезни" давно вылечены. a) Простейшая задача на .Net занимает очень мало места и стартует очень быстро. Просто уберите все лишнее. б) дНет действует абсолютно логично. Зачем грузить то, что не нужно? Хотите подгрузить сразу? Никаких проблем. Проблемы идут от незнания принципов работы со сборками и не понимания необходимых требований. в) никакой связи между занимаемой памятью и лагами в интерфейсе нет. Конечно, если у Вас свободной памяти всего 5 мегабайт - тогда да. Но никто же не предлагает ставить .Net на микроконтроллерах. Ничего против Си и Си++ не имею. Пользовался. Хорошие языки. ) Но в 90% случаев предпочел бы Java и .Net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 11:27 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonКстати по пункту 1 (CPU) я уже нашёл подходящий тест. Это алгоритм рендеринга 3D-графики на С++ . Достаточно не сложный чтобы портировать его на шарпы и Java. Он практически не использует память. Но зато плотен в вещественных вычислениях. Ближе к пятнице я оформлю его как ТЗ в своём тяпничном сообщении. Честно говоря, думаю что тест CPU - лишний. Но глянуть на алгоритм можно бы было. Можно и процедурку наваять, в принципе. Just for fun ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 11:51 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Еще не стоит забывать, что в С++ "прострелить себе ногу" куда проще чем в Джаве и ДотНете Всякие утечки памяти, небезопасный код и тд и тп... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 11:54 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглДля тех кто умеет и хочет потестировать нужно для дНета и Явы: -на разных задачах сравнить футпринт размещения на диске и в оперативной памяти всего фреймворка. Исходя из личного опыта подобных измерений убеждён что очень часто специалисты не сходятся на методологии замера выдавая одни цифры за другие и подменяя понятия. Элементарно, счётчики JVisualVM/Jmap не совпадут с данными в taskmanager. .Net также будет предоставлять целый мешок характеристик и нам будет не так просто акцентироваться на самом главном. Поэтому во избежаниекривотолков: - Прошу вас написать краткую инструкцию по замеру футпринта. - Желательно подкрепить скриптами на Windows-shell (Windows), Bash/Sh (*Nix). -оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче. Я не знаю каким образом это можно оценить. Ожидаю от вас предложения. -засечь page faults при различных задачах (разнообразное использование фреймворка.vs.много обрабатываемых данных) по мере занятости памяти системы Здесь нужна некоторая вводная. По поводу Page Faults. И нужно также подкрепить некоторой инструкцией. Хотя-бы для Win/Linux. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 11:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Cpt. GrayЕще не стоит забывать, что в С++ "прострелить себе ногу" куда проще чем в Джаве и ДотНете Всякие утечки памяти, небезопасный код и тд и тп... Тезис интересный. Но я думаю что лучше мы его поскипаем. Мы будем считать что наше ПО С++ не содержит memory laks. Тоесть оно КОРРЕКТНО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 11:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxНо в 90% случаев предпочел бы Java и .Net Вточку. Топик называется О применимости языков. Я думаю что если он когда-либо закончится мы будем иметь своё мнение о применимости и о % распределении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 12:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonНу насколько я помню, ты ни разу так ничего такого и не сделал. Стоит уйти с форума лет на 5, уже и пароль требуют =) Высосано не из пальца, а из Инернетов. Я смотрел много тем разных тестов. Все конечно недостоверно, т.к. например тесты скорости дНета микрософтом "запрещены". Тем не менее они в 4й версии подтянулись. Старые ссылки: http://www.sql.ru/forum/412782-1/benchmarki-c-c-java-delphi http://www.sql.ru/forum/776019-1/optimiziruushhie-kompilyatory Топики датируются 2007-2010 годом. С того времени много воды утекло. Целая эпоха для некоторых технологий. Предлагаю не смотреть на их результаты. Кстати по пункту 1 (CPU) я уже нашёл подходящий тест. Это алгоритм рендеринга 3D-графики на С++ . Достаточно не сложный чтобы портировать его на шарпы и Java. Он практически не использует память. Но зато плотен в вещественных вычислениях. Ближе к пятнице я оформлю его как ТЗ в своём тяпничном сообщении. На объективность в плане ВЫБОРА алгоритма я не претендую. Рад буду услышать предложения и дополнения. Так можно результаты не смотреть, а перекомпилировать те же исходники на современных платформах. Не думаю, что твоя задача даст иное распределение, чем SCimark. К тому же для задач такого типа важнее возможность кластеризации, чем пиковая производительность на отдельной машине. ИзопропилЗимаргл, ну поехали, обсудим http://www.ibm.com/developerworks/library/j-multitenant-java/ Отличный пример. В нем написано,что в Jvm7 убрали изолированность в памяти экземпляров кода фреймворка и получили выигрыш в 2.1 раза по памяти и в 1.5 по скорости загрузки приложений. Что совпадает с моими утверждениями. Adxв) никакой связи между занимаемой памятью и лагами в интерфейсе нет. Это неверно. Проверяется следующим образом - щелкаем по интерфесу дНетовской софтинки и смотрим как меняется показатель "Ошибки страниц" в Диспетчере задач. Это подгрузка с диска интерфейсных классов. Лучше обсуждать не абстрактное "понимание", а факт того, что дНет показывает во всех тестах наихудшие результаты из всех компетиторов. mayton... - Прошу вас написать краткую инструкцию по замеру футпринта. Я сходу не смогу придумать адекватный и _воспроизводимый_ академический метод. Когда смотрел для себя - просто засекал дельту свободной памяти при выгрузке отработавшего приложения. В Win7 Это совпадает с показателем "Память - Рабочий набор". Объем же фреймворка, подлинкованного но не загруженного можно увидеть в "Память - выделенная память". Но боюсь, для языков с широкм использованием динамического связывания это не годится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 12:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravКакую конкретику ты хочешь? Вот я тебе ставлю задачу описать и разработать наш класс Pool<>, но с максимальной производительностью. Ответ: производительность не нужна, напишу на встроенных в Яву коллекциях. Я тебе предлагаю напиши на Яве union. Ты мне: мне API не хватает. Ну так хотя бы опиши на Яве парадигму RAII. Ответ: Денису Ричи было не нужно и мне не нужно. Интересный ты человек. Ты ставишь синтетическую задачу. Задачу в которой мы ничего не делаем кроме аллокации объектов в пуле и возврата их назад. Несколько лет назад в форуме был некто Базист который делал свою In-memeory DBMS на хеш-арреях с потрясающими характеристиками отклика. Но маршалинг из .Net в его систему просадил перформанс на порядок. Система больше тратила времени на транспорт данных между контекстами .Net и пространством dll. Это я к чему говорю. Реальность это не ZERO-value операции с указателями. Это операции наполненные СМЫСЛОМ. Несущие какой-то КПД. Если ты мне предлагаешь реализовать идеальный пул объектов и сравнивать его с имеющимся Pool<> в С++ то я не согласен с такой постановкой. Я просто не хочу делать. Нет мотивации. Поэтому прошу тебя. Наполни задачу хоть каким-то смыслом и возможно у меня появится интерес ее делать. Пускай это будет численный метод или расчёт генома вируса или поиск галлактик. Доказывать любой ценой я тоже не хочу. Тем более что в Java достаточно коробочных пулов на все случаи жизни. Далее ты пишешь - напиши мне на яве union. Это ты решил поиздеваться надо мной? Я могу эмулировать union с оценкой o(1) через Classes с getters. Могу даже кастить double в int. Есть и для этого API. Но зачем я буду писать "смешной" код?? Код за который меня засмеют сишники и не потому что он плох а потому что я ПРОИГРАЛ изначально как только вступил с тобой в спор. Можешь чувствовать себя победителем. В Java нет union. И я не буду и не хочу его реализовывать. Я не хочу что-то доказывать любой ценой. Надеюсь ты понимаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 12:59 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл, Так можно результаты не смотреть, а перекомпилировать те же исходники на современных платформах. Не думаю, что твоя задача даст иное распределение, чем SCimark. Насколько я понял SCimark гоняет Java-апплет на разных ОС и версиях JRE. Это не то что я хотел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 13:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл Adxв) никакой связи между занимаемой памятью и лагами в интерфейсе нет. Это неверно. Проверяется следующим образом - щелкаем по интерфесу дНетовской софтинки и смотрим как меняется показатель "Ошибки страниц" в Диспетчере задач. Это подгрузка с диска интерфейсных классов. Лучше обсуждать не абстрактное "понимание", а факт того, что дНет показывает во всех тестах наихудшие результаты из всех компетиторов. Еще раз. "Интерфейсные классы" с диска в .Net не грузятся. Там вообще нет такого понятия. Раз уж Вы хотите отсутствие абстракций. А тесты в студию. Особенно "все". А то некоторые любят сравнивать. Под Си++ пишут printf(), а под С# - форму с компонентами, кнопкой, окошком для вывода, а потом говорят - "Вы видели, как медленно все работает?" Хотите чистую производительность? Отключите все лишние сборки и напишите консольное приложение. Не хотите консольное? Тогда выбирайте сопоставимые по функционалу интерфейсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 13:55 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonЗимаргл, Так можно результаты не смотреть, а перекомпилировать те же исходники на современных платформах. Не думаю, что твоя задача даст иное распределение, чем SCimark. Насколько я понял SCimark гоняет Java-апплет на разных ОС и версиях JRE. Это не то что я хотел. Это просто кусок вычислительного кода. http://math.nist.gov/scimark2/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 13:55 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглТак можно результаты не смотреть, а перекомпилировать те же исходники на современных платформах. Не думаю, что твоя задача даст иное распределение, чем SCimark. К тому же для задач такого типа важнее возможность кластеризации, чем пиковая производительность на отдельной машине. Про Scimark уже отписал мысли. По поводу кластеризации - согласен. Это тренд нового времени. Но Петрав к сожалению навязывает нам достаточно ограниченную повестку. Более того. Он жонглирует монопольным доступом ко всей памяти. Неслыханная щедрость. Что-ж. Вот так вот на широкую ногу живут Авиаторы. Мне так не жить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 13:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
А. Прошу прщения. В SciMark есть сишная имплементация LU, FFT e.t.c. По тексту репорта совершенно было неочевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 14:31 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглСтарые ссылки: http://www.sql.ru/forum/412782-1/benchmarki-c-c-java-delphi Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Но есть нестыковка: ява-код не обновлялся с версии 4.61 (ноябрь 2008) и он однопоточный, а ядер у моего проца два и lzma.exe честно грузит оба. Я считаю, что -если размер обрабатываемых данных в памяти существенно больше кода в памяти, то на сваппинг можно забить -в остальных случаях - объем кода имеет значение в двух больных местах - вымывании кэша процессоров и page faultsВы уже профилировили "пофигу что" или ваше утверждение следует из общей эрудиции и банальной логики? Я, например, знаю пример, когда желание экомонить ресурсы (отложенная инициализация) создало вполне реальные проблемы. Более того, я знаю , что это была экономия на спичечных опилках. -на разных задачах сравнить футпринт размещения на диске и в оперативной памяти всего фреймворка. -оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче. -засечь page faults при различных задачах (разнообразное использование фреймворка.vs.много обрабатываемых данных) по мере занятости памяти системы"Код, сестра! Код!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 16:06 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, можешь подчеркнуть цифры которые сравниваешь. Ни пса нипонятно в этом отчете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 16:12 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
mayton, у Це-кода - ~2600Mips против 1700 и (пропало в трёх точках) ~2600 КiB /s против 1450 KB /s на упаковке. На распаковке проигрыш примерно втрое по КБ/сек. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 16:25 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovНо есть нестыковка: ява-код не обновлялся с версии 4.61 (ноябрь 2008) и он однопоточный, а ядер у моего проца два и lzma.exe честно грузит оба. Для чистоты эксперимента надо ампутировать одно ядро :) В 7-ке вызвать msconfig, вкладка "Загрузка", кнопка "Дополнительно" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 16:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, круть. Спасибо за тестинг. Еще попробуй плиз выставить ключик -XX:CompileThreshold=1. (со ссылкой на http://www.oracle.com/technetwork/articles/java/vmoptions-jsp-140102.html) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 16:42 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TBasil A. SidorovНо есть нестыковка: ява-код не обновлялся с версии 4.61 (ноябрь 2008) и он однопоточный, а ядер у моего проца два и lzma.exe честно грузит оба. Для чистоты эксперимента надо ампутировать одно ядро :) В 7-ке вызвать msconfig, вкладка "Загрузка", кнопка "Дополнительно" Согласен. Ценное замечание. Я-бы еще поигрался с ключами Код: plaintext 1. Счастливые обладатели пингвина или чорта в кедах - тоже теоретически имеют контроль над защёлкиванием процесса на ядрах но как это сделать щас - не скажу. Не помню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 16:46 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИМХУ задача упаковка/распаковка не совсем корректна для таких тестов. Она заточена под прямой доступ к памяти, т.е. изначально в пользу С/С++. Не удивлюсь что еще есть заточка на уровне проца, т.к. задача распространенная и ресурсоемкая, могли какие-нибудь команды для ускорения добавить. Надо что-то что обычно решают на высокоуровневых языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 16:51 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Как-то я из любопытства разбирал sun-вские пакеты zip/gzip/gif сжатия и дошёл до того что их реализация Deflater сокрыта в виде native кода. Но я надеюсь что в данном тесте это не так. В противном случае этот тест был-бы фикцией т.к не являлся-бы pure-java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 17:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonЕще попробуй плиз выставить ключик -XX:CompileThreshold=1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 17:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TИМХУ задача упаковка/распаковка не совсем корректна для таких тестов. Она заточена под прямой доступ к памяти, т.е. изначально в пользу С/С++. Не удивлюсь что еще есть заточка на уровне проца, т.к. задача распространенная и ресурсоемкая, могли какие-нибудь команды для ускорения добавить. А лучше всего под такие задачи на OpenCL писать. Если графическая карточка в компе имеется. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 17:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Далеко не все GPU-вычисления "лучше": как только требуется доставить до видимокарты (много) исходных данных и забрать (большой) результат - всё резко плохеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 17:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
GPU-вычисления так и останутся в сегменте невостребованного. Там где нужна широкая шина взаимодействия с I/O и портами будет неизбежный провал. Архитектура такова ибо. Ковыряние bitcoin-ов это другое дело. Но как часто нам по жизни оно надо? У меня вот узкое место - это собственно процесс компилляции проекта. Уж чего только не придумывал. Почти принципиально неоптимизируемый процесс. Можно только структуру проекта побить на модули разве что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 17:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonGPU-вычисления так и останутся в сегменте невостребованного. Как раз Ваша идея о проверке производительности CPU с помощью алгоритма рендеринга 3D-графики - классический пример востребованности. ) Работа с графикой и видео - туда же. Проекты Folding@home и Rosetta@home убедительно доказали, что перенос части расчета на GPU дает колоссальный выигрыш и в научных вычислениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 18:45 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxmaytonGPU-вычисления так и останутся в сегменте невостребованного. Как раз Ваша идея о проверке производительности CPU с помощью алгоритма рендеринга 3D-графики - классический пример востребованности. ) Работа с графикой и видео - туда же. Проекты Folding@home и Rosetta@home убедительно доказали, что перенос части расчета на GPU дает колоссальный выигрыш и в научных вычислениях. Я-же говорил что я не претендую на ПРАВИЛЬНОСТЬ обоснования задачи. Предложите ваши варианты. Должны быть охвачены сегменты CPU/Memory/IO. По отдельности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 18:49 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonЯ-же говорил что я не претендую на ПРАВИЛЬНОСТЬ обоснования задачи. Предложите ваши варианты. Должны быть охвачены сегменты CPU/Memory/IO. По отдельности. Ничего против Вашей задачи я не имею. То, что она идеально ложится на связку CPU+GPU не означает, что она не подходит для сравнения языков по CPU. Впрочем, я о классе задач, возможно предложенный Вами вариант на GPU и не ложится. Нужно смотреть детально алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 18:58 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Исходник на сях уже готов. Возможно сегодня опубликую отдельным топиком. Осталось портировать его на Java/C#/Python. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 19:12 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Если развести философию по теме, то С/С++ такой же фрэймворк/виртуальная машина над ассемблером, как и другие языки. Только наиболее близко опущенный до уровня асма. У каждого проца есть свои плюсы и минусы, но в связи с тем что даже x86/x64 процов целый зоопарк (Intel на каждом шаге добавляет новые команды и оптимизирует старые), то уже никто не заморачивается на подгонку софта под проц. Заметил когда баловался расчетом простых чисел , небольшая подстройка алгоритма меняет скорость работы в разы на одном компе и почти не влияет на другом. Т.е. идеал - подстройка асм-кода под конкретный проц, т.е. учесть имеющийся набор команд, размер кэшей и т.д. Уверен что есть куча рекомендаций от производителей процов по этому поводу, но т.к. писать под весь зоопарк на асме задача неподъемная (большинству), то был придуман С (точнее он был придуман в эпоху предыдущего зоопарка, но не суть). Благодаря его широкому распространению выгодно дорабатывать компиляторы, поэтому тот же самый код собранный более свежим компилятором работает быстрее. На 100% уверен что EXE после современного компилятора не заработает на первом 32-битном проце Intel 386. Более того, пытаясь поставить линукс на не столь старый ноут с Pentium M, удивился что он не встает, т.к. там нет какого-то поднабора команд для работы с большими наборами памяти, интел тогда счел их ненужными для ноутов. Выше приведенный аргумент что виртуальные машины/интерпретаторы/jit-компиляторы написаны на С/С++ не выдерживает никакой критики. А чего не на асме с учетом особенностей конкретного проца? Может было бы быстрее на 10-200%. Тесты производительности тоже ниочем. Ну получили производительность в 2-3 раза быстрее, а завтра надо будет расшириться в 100 раз и все равно упремся в предел, что делать? Какая разница если предел есть? Не важно наступит он завтра или послезавтра, главное что наступит. Поэтому пофиг на чем писать (задачи требующие реалтайм опускаем). Главное писать так чтобы при наступлении пределов был четкий план как их обойти. Вопрос ресурсов тут вторичный, т.е. сколько денег на железо потребуется. Но если это не прогнозировать, то в один прекрасный день наступит понимание что проблема усилением железа не решается и надо начинать разработку с нуля, а это на порядки больше денег. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 19:15 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TЕсли развести философию по теме, то С/С++ такой же фрэймворк/виртуальная машина над ассемблером, как и другие языки. Только наиболее близко опущенный до уровня асма. У каждого проца есть свои плюсы и минусы, но в связи с тем что даже x86/x64 процов целый зоопарк (Intel на каждом шаге добавляет новые команды и оптимизирует старые), то уже никто не заморачивается на подгонку софта под проц. Если ты не в курсе, то ассемблер это не самый нижний уровень. Есть еще уровень внутреннего микрокода конкретного процессора. На нем надо писать. Вообще то я писал, что реальная производительность сейчас упирается не в скорость вычислений (качество компилятора), а в размеры ресурсов для его обслуживания. Т.е. считаем вроде быстро, но следующий кусок кода приходится подгружать с другой планеты (диска). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 20:25 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЕсли ты не в курсе, то ассемблер это не самый нижний уровень. Есть еще уровень внутреннего микрокода конкретного процессора. На нем надо писать. Если честно - не в курсе. На асме писал 20 лет назад. ЗимарглВообще то я писал, что реальная производительность сейчас упирается не в скорость вычислений (качество компилятора), а в размеры ресурсов для его обслуживания. Т.е. считаем вроде быстро, но следующий кусок кода приходится подгружать с другой планеты (диска). Если мои выводы почитал, то понял бы что пофиг откуда последний кусок кода берется. В итоге такого "успешного" кода будет тупик требующий полной переписки кода. Еще раз: главное алгоритмы позволяющие масштабируемость, на чем они реализованы - вторично, т.е. пофиг на чем написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 20:32 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЕсли ты не в курсе, то ассемблер это не самый нижний уровень. Есть еще уровень внутреннего микрокода конкретного процессора. На нем надо писать. Если вы писали - то поделитесь полезными юзкейсами. Ту инфу которую я собирал по этому вопросу можно количественно охарактеризовать как "ноль инфы". Всё недокументировано. Vendor-depends. В некоторых форумах спецы по железу фиксили проблемы конкретных моделей или линеек накатывая микрокод от производителя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 23:12 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЭто неверно. Проверяется следующим образом - щелкаем по интерфесу дНетовской софтинки и смотрим как меняется показатель "Ошибки страниц" в Диспетчере задач. Это подгрузка с диска интерфейсных классов. Это верно при первом запуске. Пока они не попали в кэш диска ОС. Включил комп. Запускаю MSSQL Managment Studio 2012 (.Net 4.0) Процесс ssms.exe: Хрустит винтом секунд 7-8, Ошибок страниц 38 000. Закрываю. Запускаю снова, 1-2 секунды, ошибок страниц 39 000, винта не слышно. Все потому что нужный код уже в кэше ОС. Формально ошибка страницы это когда код/данные отсутствуют в памяти процесса, а вот откуда они будут подгружаться - это данный параметр никак не учитывает. При достаточном количестве оперативки проблемы чтения с HDD неактуальна. Остается только проблема со скоростью записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 07:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
C# пока только начинаю осваивать, поэтому знаю чуть-чуть теории и 0 практики. Как понимаю основные тормоза при старте тяжелого приложения из-за JIT-компиляции, которая идет при каждом запуске. Но этого можно избежать если откомпилировать сборку заранее https://msdn.microsoft.com/ru-ru/library/6t9t5wcf(v=vs.110).aspx Там правда как-то все мутно и не просто, но думаю если разобраться, то вполне применимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 07:48 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Недавно встретил у Лафоре, но не уверен, актуальна ли эта фраза: Robert Lafore OOP in C++ fourth editionOf the object-oriented programming languages, C++ is by far the most widely used. Java, a recent addition to the field of OO languages, lacks certain features-such as pointer, templates, and multiply inheritance - that make it less powerfull and versatile than C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 09:06 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНедавно встретил у Лафоре, но не уверен, актуальна ли эта фраза: Robert Lafore OOP in C++ fourth editionOf the object-oriented programming languages, C++ is by far the most widely used. Java, a recent addition to the field of OO languages, lacks certain features-such as pointer, templates, and multiply inheritance - that make it less powerfull and versatile than C++. Роберту нужно было в начале предложения добавить "ИМХО" Говорить, что Джава "слабее, из-за того, что в ней нет множественного наследования, указателей и шаблонов как-то уж очень холли варно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 10:24 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНедавно встретил у Лафоре, но не уверен, актуальна ли эта фраза: Robert Lafore OOP in C++ fourth editionOf the object-oriented programming languages, C++ is by far the most widely used. Java, a recent addition to the field of OO languages, lacks certain features-such as pointer, templates, and multiply inheritance - that make it less powerfull and versatile than C++. Ерунда. Написано о том, что в Java нет тех вещей, которые специально оттуда убрали. Лафоре такой подход не нравится - его право. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 10:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Каким числом датируется это сообщение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 10:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
mayton, В общем скачал новую платформу VS2015 и пересмотрел Scimark2. Почти ничего не поменялось - только Си ушел в еще более дальний отрыв. ~1.5 раза быстрее дНета4 и Явы7. Ну и немного соврал про аутсайдера - это Дельфи7 с троекратным отрывом =) Кто захочет - пересоберет на новой Дельфе сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 10:51 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TВключил комп. Запускаю MSSQL Managment Studio 2012 (.Net 4.0) Процесс ssms.exe: Хрустит винтом секунд 7-8, Ошибок страниц 38 000. Закрываю. Запускаю снова, 1-2 секунды, ошибок страниц 39 000, винта не слышно. А Вам не приходило в голову, что Managment Studio грузит сборки не просто так? Что они нужны? Что там полезный код и данные? И что там при старте происходит множество вещей. Не понимаю, почему долгая загрузка сама по себе - это плохо. По ошибкам. Вам (скорее Зимарглу ) не кажется, что большое количество ошибок связано с отсутствие необходимого количества физической памяти? Можно сколько угодно ругать современный софт за высокие требования к объему ОЗУ, но ничего не изменится. Managment Studio вполне ложится в эту концепцию. Можно еще поругать сайты за требования к скорости интернета и проца. Опять же они объем памяти жрут своими многомегабайтными страницами. Речь идет о том, как быть, если Вам нужно написать небольшое и быстрое приложение, не отягощенное десятками визуальных библиотек и разнообразных ресурсов. Например, Вы пишите сервис, которому интерфейс не нужен в принципе. Или консольное приложение. Я понимаю применимость именно в таком смысле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:08 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл, Где Вы берете исходники под эти языки? Дайте ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл, и напишите, пожалуйста, характеристики машины, на которой Вы все это тестировали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:13 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Думаю что явление "прогрева двигателя" специфично не только для сред платформеров. Того-же эффекта можно достигать в Oracle, запрашивая индексный доступ к крупной таблице. Первый пуск будет всегд медленным. В сетях TCP/IP я также наблюдал явление когда "первый" IP пакет в цепочке пробивает себе дорогу ощутимо медленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:18 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимарглmayton, В общем скачал новую платформу VS2015 и пересмотрел Scimark2. Почти ничего не поменялось - только Си ушел в еще более дальний отрыв. ~1.5 раза быстрее дНета4 и Явы7. Ну и немного соврал про аутсайдера - это Дельфи7 с троекратным отрывом =) Кто захочет - пересоберет на новой Дельфе сам. Зимаргл. А есть данные по .Net и Java7 в сравнении? Можешь табличку сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:26 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
mayton, кэш есть даже у процессора. Аж три уровня. Да еще какие-то данные могут быть сохранены в регистрах ... ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:28 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Да. Ресурсы можно рассматривать как пирамиду РОН/L1-L2/Memory/PagingFile. Или еще играя в пасьянс с AFFINITY тоже получать различные конфигурации для мультипоточности. Интересно как наш летчик решает проблемы отклика для такой пирамидальной архитектуры? Или у него нет пирамидки ресурсов. Мдя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:45 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxDima TВключил комп. Запускаю MSSQL Managment Studio 2012 (.Net 4.0) Процесс ssms.exe: Хрустит винтом секунд 7-8, Ошибок страниц 38 000. Закрываю. Запускаю снова, 1-2 секунды, ошибок страниц 39 000, винта не слышно. А Вам не приходило в голову, что Managment Studio грузит сборки не просто так? Что они нужны? Что там полезный код и данные? И что там при старте происходит множество вещей. Не понимаю, почему долгая загрузка сама по себе - это плохо. Это к чему вообще сказано? Мысли вслух? Разделяю :) Вообще-то я это Зимарглу писал чтобы показать ошибочность его предположения что загрузка кода с HDD узкое место. AdxПо ошибкам. Вам (скорее Зимарглу ) не кажется, что большое количество ошибок связано с отсутствие необходимого количества физической памяти? Подучи матчасть как виндовс устроен. Хорошая книжка Джеффри РИХТЕР "Windows для профессионалов", там все разжевано доступным языком. Вкратце: загрузка DLL в память процесса происходит маппингом файла, т.е. DLL файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:59 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TПодучи матчасть как виндовс устроен. Хорошая книжка Джеффри РИХТЕР "Windows для профессионалов", там все разжевано доступным языком. Вкратце: загрузка DLL в память процесса происходит маппингом файла, т.е. DLL файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере. Ошибки страниц происходят тогда, когда процесс обращается к странице памяти, которая отсутствует в рабочем наборе. Для устранения некоторых ошибок страниц требуется получить содержимое страницы с диска, а другие можно устранить без обращения к диску . Справка Microsoft по TM в Windows 7. (с) Обращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 12:12 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Adx Ошибки страниц происходят тогда, когда процесс обращается к странице памяти, которая отсутствует в рабочем наборе. Для устранения некоторых ошибок страниц требуется получить содержимое страницы с диска, а другие можно устранить без обращения к диску . Справка Microsoft по TM в Windows 7. (с) Это не противоречит тому что я написал. Читай Рихтера если интересно. AdxОбращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать? Давай, только это к обсуждаемому вопросу не имеет отношения. Я под DLL подразумевал код самой библиотеки .Net, а не сборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 12:30 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonЗимарглmayton, В общем скачал новую платформу VS2015 и пересмотрел Scimark2. Почти ничего не поменялось - только Си ушел в еще более дальний отрыв. ~1.5 раза быстрее дНета4 и Явы7. Ну и немного соврал про аутсайдера - это Дельфи7 с троекратным отрывом =) Кто захочет - пересоберет на новой Дельфе сам. Зимаргл. А есть данные по .Net и Java7 в сравнении? Можешь табличку сделать? https://code.google.com/archive/p/scimark-delphi/ Там есть готовые .exe под шарп, си и дельфи. http://math.nist.gov/scimark2/ - тут исходники под Си и Яву. javac *.java затем классы сложить в jnt\scimark2\ запускать java jnt.scimark2.commandline Dima TAdxпропущено... А Вам не приходило в голову, что Managment Studio грузит сборки не просто так? Что они нужны? Что там полезный код и данные? И что там при старте происходит множество вещей. Не понимаю, почему долгая загрузка сама по себе - это плохо. Это к чему вообще сказано? Мысли вслух? Разделяю :) Вообще-то я это Зимарглу писал чтобы показать ошибочность его предположения что загрузка кода с HDD узкое место. AdxПо ошибкам. Вам (скорее Зимарглу ) не кажется, что большое количество ошибок связано с отсутствие необходимого количества физической памяти? Подучи матчасть как виндовс устроен. Хорошая книжка Джеффри РИХТЕР "Windows для профессионалов", там все разжевано доступным языком. Вкратце: загрузка DLL в память процесса происходит маппингом файла, т.е. DLL файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере. Именно так. Следовательно, чем больше фремворк, тем больше своппинга. Попал в кэш - хорошо, но чтение из дискового кэша тоже недешевая операция. Если использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 12:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Не проверял .net native компиляцию, т.к. нет win10 под рукой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 12:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл https://code.google.com/archive/p/scimark-delphi/ Там есть готовые .exe под шарп, си и дельфи. http://math.nist.gov/scimark2/ - тут исходники под Си и Яву. javac *.java затем классы сложить в jnt\scimark2\ запускать java jnt.scimark2.commandline Благодарю но не сейчас. Щас есть чем заниматься for fun. У меня на проекте application съедает со старта 400Мб char[]. Надо разобраться что там лежит. Подозреваю что java.lang.String что в свою очередь - какие-то последствия засилья Persistence с PGSQL. Вобщем надо разбираться. Процедурально я уже знаю ЧТО делать но пока не знаю как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 12:58 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TЭто не противоречит тому что я написал. Читай Рихтера если интересно. Противоречит. Не все ошибки связаны с диском. Вы путаете разные понятия. AdxОбращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать? Давай, только это к обсуждаемому вопросу не имеет отношения. Я под DLL подразумевал код самой библиотеки .Net, а не сборки.[/quot] Библиотеки .Net - это сборки, это раз. То, что они называются DLL - это ничего не значит. Важен механизм работы. И два, у Вас идут рассуждения о Managment Studio, а теперь Вы говорите об основных библиотеках .Net. Напишите консольное приложение "Hello world" и отключите ВСЕ системные сборки .Net. Вы получите приложение размером в 5 кб Оно подгрузит библиотеку mscoree размером в 300кб. Та в свою очередь будет ссылаться на базовые библиотеки Windows (типа kernel32, user32) Внимание вопрос. Сколько такое приложение считает с диска при запуске? Если не знать как работает JVM и .Net, а читать книжки по общим принципам, а остальное додумывать, ничего хорошего не выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 13:31 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглТам есть готовые .exe под шарп, си и дельфи. Готовые exe - не интересно. Нужно смотреть, как написан код, с какими параметрами скомпилирован. Оптимизация и правильные ключи могут и в полтора раза скорость поднять. В этом смысле тестовая задача интереснее. Меньше кода, проще посмотреть узкие места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 13:38 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглИменно так. Следовательно, чем больше фремворк, тем больше своппинга. Попал в кэш - хорошо, но чтение из дискового кэша тоже недешевая операция. Не совсем. Во-первых читается не все, а только то что надо. Во-вторых если оперативной памяти хватает, то повторного чтения не надо. Правильнее сказать "чем больше разных объектов фремворка использовано, тем больше своппинга". Например смотрим тот же Managment Studio загрузился до окошка выбора сервера - занял 54 Мб. Запустил свою поделку консольную на C# - 1,4 Мб. Думаю все эти проблемы решаемы. Просто надо решать. Например FireFox 4-5 лет назад грузился чуть ли не минуту, хоть и написан на C/C++. Опять же все зависит о задачи. Насколько критично сэкономить 10-100 Мб ОЗУ, фремворк это ж не только занимание памяти, но и облегчение и ускорение разработки. Например поиск и удаление процесса с заданным именем код на С Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. Код на C# Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Согласись что второй вариант заметно компактнее. ЗимарглЕсли использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно. Не проверял .net native компиляцию, т.к. нет win10 под рукой. Я пока до этого не дошел в шарпе, ничего не скажу. Пока "Hello world" осваиваю :) По поводу предварительных компиляций я так понял что это есть как минимум начиная с 4.0 которая под XP работает, но там есть своя специфика: компилить надо на компе где будет работать, еще кое-какие ньюансы надо учесть. Есть вместе с фрэймворком NGEN.EXE , который этой компиляцией занимается если попросить. Глубоко не вникал, рано мне еще, читал в книге "Дж. Рихтер CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 13:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TСогласись что второй вариант заметно компактнее. ... Глубоко не вникал, ... А так же использует кучу классов из сборок, которые мы не собираемся грузить из за экономии времени загрузки. Нет уж, только хардкор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 13:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл Следовательно, чем больше фремворк, тем больше своппинга. Если использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно. Зачем Вам ВЕСЬ фреймворк? Первое предложение неверно в корне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 13:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Adx, я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал. Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:03 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TЗапустил свою поделку консольную на C# - 1,4 Мб. Это очень много. Ищите, где лишний код ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxЗимарглТам есть готовые .exe под шарп, си и дельфи. Готовые exe - не интересно. Нужно смотреть, как написан код, с какими параметрами скомпилирован. Оптимизация и правильные ключи могут и в полтора раза скорость поднять. В этом смысле тестовая задача интереснее. Меньше кода, проще посмотреть узкие места. Там есть исходный код. Бери, компилируй с разными ключами. Смотри код. Я собственно, потому результаты и не стал выкладывать, что у каждого они будут немного свои. Dima T.... Запустил свою поделку консольную на C# - 1,4 Мб. ... Опять же все зависит о задачи. Насколько критично сэкономить 10-100 Мб ОЗУ, фремворк это ж не только занимание памяти, но и облегчение и ускорение разработки. ... Ты не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач. К примеру тот же Скимарк занимает 3Мб в Си варианте и 11Мб в С#. Насколько критично 50Мб Озу на процесс вебсервера можешь посмотреть в статье про multitenant JVM выше по топику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
В 2000х виндах я как-то ради интереса анлизировал зависимости консольного HelloWorld приложения. Вобщем оно всегда зависит от user*.dll, kernel*.dll, gdi*.dll + еще пяток библиотек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:15 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TAdx, я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал. Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет. Без проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить. 1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET Независимо от размера всего фреймворка. 2) В .NET есть много механизмов загрузки сборок. Можно загрузить ее в память сразу, и потом уже не происходит обращения к диску. 3) Ошибки страниц не стопроцентный показатель, зависит от приложения. 4) Насчет кэширования Вы писали, замечу только, что своппинг генерит ошибки страниц со страшной силой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:17 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглТам есть исходный код. Бери, компилируй с разными ключами. Смотри код. Я собственно, потому результаты и не стал выкладывать, что у каждого они будут немного свои. ... Ты не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я думал, для C# тоже есть. У меня 5 mb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:26 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглDima T.... Запустил свою поделку консольную на C# - 1,4 Мб. ... Опять же все зависит о задачи. Насколько критично сэкономить 10-100 Мб ОЗУ, фремворк это ж не только занимание памяти, но и облегчение и ускорение разработки. ... Ты не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач. Как понимаю речь об этом Зимарглmayton... - Прошу вас написать краткую инструкцию по замеру футпринта. Я сходу не смогу придумать адекватный и _воспроизводимый_ академический метод. Когда смотрел для себя - просто засекал дельту свободной памяти при выгрузке отработавшего приложения. В Win7 Это совпадает с показателем "Память - Рабочий набор". Объем же фреймворка, подлинкованного но не загруженного можно увидеть в "Память - выделенная память". Но боюсь, для языков с широкм использованием динамического связывания это не годится. Смотрю на свою программулину (вообще она для поиска одинаковых файлов на диске, но без параметров просто выдает справку о командной строке и висит ждет нажатия на кнопку) Рабочий набор 6,7 Мб Выделенная память 4,8 Мб Частный рабочий набор 1,4 Мб читаем хэлп что это означаетПамять - рабочий набор Объем памяти в частном рабочем наборе плюс объем памяти, используемой процессом, которую нельзя использовать совместно с другими процессами. Память - пик рабочего набора Максимальный объем памяти рабочего набора, использованный процессом. Память - дельта рабочего набора Изменение объема памяти рабочего набора, используемой процессом. Память - частный рабочий набор Частный рабочий набор показывает конкретный объем используемой процессом памяти, который данный процесс не может использовать совместно с другими процессами. Память - выделенная память Объем виртуальной памяти, выделенной процессу. Память - выгружаемый пул Объем страничной виртуальной памяти ядра, выделенной ядром или драйверами процессу. Страничная виртуальная память - это память, которую можно переписать на другой носитель, например жесткий диск. Память - невыгружаемый пул Объем невыгружаемой памяти ядра, выделенной ядром или драйверами процессу. Невыгружаемая память - это память, которую нельзя переписать на другой носитель. Мутно немного написано, но куда надо смотреть зависит от задачи. Например 1. у нас одна копия проги то заняли Рабочий набор, т.е. там и данные и код проги, и фрэймворк. 2. у нас N процессов одной и той же проги, то займет она Рабочий набор + (N - 1) * Частный рабочий набор. 3. у нас N разных прог, но на одном фрэймворке, фрэймворк в реальной памяти тоже будет однократно размещен, поэтому будет как в п.2 плюс размер самих прог (без фрэймворка) ЗимарглНасколько критично 50Мб Озу на процесс вебсервера можешь посмотреть в статье про multitenant JVM выше по топику. По сути это п.2. т.е. фрэймворк реальную память займет один раз. Другой вопрос сколько займет каждый процесс во время работы, но это уже не только от фрэймворка зависит, но и от кривизны рук разработчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 14:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Я встречал конфигурации когда на 1 хосте запускают 2 JBoss в балансере. На обоих одно и то-же приложение. Не в кластере но взаимодействующе с общим пулом БД. Таким образом админы на стороне заказчика подстраховывались от внезапных падений. У них был демон который периодически ходил на http порт и вытягивал ответ и анализировал отклик. Если отклик превышал 3-5 секунд то демон давал kill + ребут для экземпляра jboss который подвис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 15:27 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxDima TAdx, я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал. Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет. Без проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить. 1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET Независимо от размера всего фреймворка. 2) В .NET есть много механизмов загрузки сборок. Можно загрузить ее в память сразу, и потом уже не происходит обращения к диску. 3) Ошибки страниц не стопроцентный показатель, зависит от приложения. 4) Насчет кэширования Вы писали, замечу только, что своппинг генерит ошибки страниц со страшной силой. 1. Согласен. Обратного не утверждал. 2. Согласен. Обратного не утверждал. 3. У тебя просто недопонимание как все устроено, почитай книжку про устройство виртуальной памяти, адресное пространство процесса и т.п. Пример (кратко): процесс А спроецировал в свое адресное пространство файл (пофиг какой EXE, DLL, TXT), затем произошло обращение к первому байту (пофиг как: данные прочитать или код там выполнить) происходит исключение, менеджер памяти его перехватывает, читает с диска первые 4 кб файла в реальную память (вот она страница), подставляет эту реальную память просессу и возвращает управление проге, прога дальше работает. Запускается прога Б, проецирует этот же файл, обращается к первому байту, происходит исключение, счетчик ошибок страниц увеличивается, но менеджер памяти видит что эта страница уже есть в реальной памяти, поэтому он НЕ читает с диска, он просто подсовывает ее в процесс Б. Т.е. два процесса А и Б реально используют одни и теже 4 кб реальной памяти. 4. Свопинг это результат ошибок страниц, т.е. когда данных/кода нет в памяти они читаются с диска. Кроме того есть еще запись в своп для освобождения памяти. Читай книжку :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 15:28 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Cpt. GrayРоберту нужно было в начале предложения добавить "ИМХО" Говорить, что Джава "слабее, из-за того, что в ней нет множественного наследования, указателей и шаблонов как-то уж очень холли варно.. "У пистолета Макарова нет автоматического режима огня, оптического прицела и патрона, позволяющего поражать цели на значительном удалении. Поэтому по мощи и универсальности он уступает автомату". Не вижу в этой фразе ничего холиварного, просто констатация факта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 15:47 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxБез проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить. 1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET Независимо от размера всего фреймворка. Докажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:02 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima T, У Вас некоторая путаница. Вы пишите что происходит при загрузке файла в определенной ситуации. А потом обобщаете это на все понятие "ошибки страниц". И все это завязывается на загрузку приложения и набор его DLL (сборок, которые можно грузить по-разному и в разное время). С механизмом загрузки файла я не спорю, не нужно меня в этом убеждать. Ладно, тема не об этом. Основное - это первые два пункта. Если тут спора нет, то значит эти вопросы не к Вам ) softwarer"У пистолета Макарова нет автоматического режима огня, оптического прицела и патрона, позволяющего поражать цели на значительном удалении. Поэтому по мощи и универсальности он уступает автомату". Не вижу в этой фразе ничего холиварного, просто констатация факта. Не согласен. Автомат не подходит для скрытого ношения, занимает много места, мощность патрона избыточна во многих ситуациях (рикошеты и пули на излете). Где универсальность? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:05 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxНе согласен. Автомат не подходит для скрытого ношения, занимает много места, мощность патрона избыточна во многих ситуациях (рикошеты и пули на излете). Где универсальность? ) Представьте себе список различных возможных ситуаций и галочки "пистолет подходит - не подходит", "автомат подходит - не подходит". Универсальность в количестве галочек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:09 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглAdxБез проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить. 1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET Независимо от размера всего фреймворка. Докажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве. Какого интерфейса? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Вот код. Посчитай ошибки страниц. Консольное приложение под .NET, VS 2013, сборок в references нет. Убираем отладку и ставим оптимизацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:14 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima T2. у нас N процессов одной и той же проги, то займет она Рабочий набор + (N - 1) * Частный рабочий набор. Затестил. Подтверждается моя теория. Text.exeWin 32 без консоли .Net 4.0 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Рабочий набор 6,1 Мб Выделенная память 4,8 Мб Частный рабочий набор 1,4 Мб Запустил 100 процессов, наблюдал в диспетчере параметр "Физическая память (Мб) всего свободно". Для 100 процессов уменьшилось на 162-166 Мб. Т.е. ~1,6 Мб на процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:19 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглДокажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве. Тот же тест 18100590 каждый из 100 процессов показывает 1500 ошибок страниц, но это не означает 150000 обращений к диску. Выше писал Dima TПример (кратко): процесс А спроецировал в свое адресное пространство файл (пофиг какой EXE, DLL, TXT), затем произошло обращение к первому байту (пофиг как: данные прочитать или код там выполнить) происходит исключение, менеджер памяти его перехватывает, читает с диска первые 4 кб файла в реальную память (вот она страница), подставляет эту реальную память просессу и возвращает управление проге, прога дальше работает. Запускается прога Б, проецирует этот же файл, обращается к первому байту, происходит исключение, счетчик ошибок страниц увеличивается, но менеджер памяти видит что эта страница уже есть в реальной памяти, поэтому он НЕ читает с диска, он просто подсовывает ее в процесс Б. Т.е. два процесса А и Б реально используют одни и теже 4 кб реальной памяти. Я к тому что ты некорректно трактуешь значение "ошибки страниц". По твоему 1 ошибка = 1 чтение с диска. Это не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:34 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Тот же тест на С Test.exeWin 32 без консоли Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Рабочий набор 2,0 Мб Выделенная память 0,6 Мб Частный рабочий набор 0,5 Мб Ошибок страниц 533 Запустил 100 процессов, наблюдал в диспетчере параметр "Физическая память (Мб) всего свободно". Для 100 процессов уменьшилось на 48-52 Мб. Т.е. ~0,5 Мб на процесс. Как бы не намного разница: .Net занял на 1 Мб больше. Что касается ошибок страниц, так они точно сответствуют формуле Рабочий набор*256, т.к. 1 Мб = 256 страниц. Т.е. в данном случае это просто показатель сколько используется страниц в виртуальном адресном пространстве данного процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:53 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Коллеги. Я думаю что нам стоит пока отложить замер "ошибок страниц". Я имею в виду в отношении бенчмаркок С++/Java/dNet/Python. Бох весть еще какие цифры у нас полезут в Linux окружении. Это путает карты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 16:56 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TРабочий набор 6,1 Мб Выделенная память 4,8 Мб Частный рабочий набор 1,4 Мб У меня этот же код: Рабочий набор 5,3 Мб Выделенная память 4,4 Мб Частный рабочий набор 1,1 Мб Все, прекращаю оффтопить ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 17:08 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Надо какой-то тест изобрести, близкий к реальности, но не очень тривиальный. Линуксы предлагаю пока в стороне оставить. Вариант теста: сгенерить текстовый файлик с иерархическим списком но в разнобой, затем отсортировать, сохранить в другой файл. типа23.44.1. опдлываопдл 1.2. павлыопыавлопж ... формат строки: X.X....X.{пробел}текст где X 1-2 знака. Количество Х-ов до 5. Общая длина строки до 100 байт. Замеряем: 1. Время на загрузку 2. Время на сортировку 3. Время на сохранение Размер исходного файла подобрать чтобы 5-10 сек молотило. Могу генератор написать чтоб файлик у всех одинаковый был. Тогда результат на корректность можно будет по CRC проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 17:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxУ меня этот же код ... Объяснимо: у меня VS2010 у тебя вроде 2013 (если не путаю). .Net соответственно 4.0 и 4.5. Значит MS не сидит сложа руки, допиливает и что приятно - в нужную сторону :) AdxВсе, прекращаю оффтопить ) Присоединяюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 17:18 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
softwarerПоэтому по мощи и универсальности он уступает автоматуУниверсальность автомата заканчивается на "личное оружие ближнего боя". Тоже констатация факта, но обе - бессмысленные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 18:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonКоллеги. Я думаю что нам стоит пока отложить замер "ошибок страниц". Я имею в виду в отношении бенчмаркок С++/Java/dNet/Python. Бох весть еще какие цифры у нас полезут в Linux окружении. Это путает карты. Это отдельный тест. В Линухе существенное отличие на переключение контекста и мютексы всякие. На вычислительном тесте это не видно. Dima T, нужно больше использования фреймворка, а не простых операций. Можно взять создание 100 экз какого нибудь одинакового окна с кнопочками. Или еще какого объекта, который в иерархии классов фреймворка имеет много предков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 18:49 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл, Сравнивать визуальные оболочки, написанные на разных системах/языках, абсурдно. Я под С++ и C# напишу десяток разных интерфейсов с разными характеристиками. Сравнивать нужно одинаковый код, насколько это возможно, конечно. И уж визуальные библиотеки подходят для этого меньше всего. А то давайте тогда сравним MS Paint и Adobe Photoshop по памяти и скорости загрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 19:08 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
В данном топике мы обсуждали принципиальную возможность описать и закодить любой алгоритм на языке-платформере в т.ч. и тайм-критичные алгоритмы. Типа DOSBox, или игры Doom. Гонять бенчмарки для этого необязательно ИМХО но некоторые мемберы имеют свои сомнения и опасения. Кстати нам неизбежно придётся коснуться таких аспектов как пропускная способность и скорость отклика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 19:22 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглDima T, нужно больше использования фреймворка, а не простых операций. Согласен. Тест синтетический. Но он показывает умение конкретного фрэймворка подстроиться под написаный на нем код. Но это второстепенно, даже третьестепенно. Главная задача фрэймворка увязать возможности нижнего уровня (С, Асм) с простотой написания кода. Яркий пример FoxPro, на котором я и пишу восновном, подобный тест даже не буду выкладывать, проиграет по всем параметрам. Но на фоксе можно легко делать такие вещи, которые вызовут глубокую зависть конкурентов. Недавно демонстрировали мою поделку одной достаточно большой компании, сбежался весь ИТ-отдел, смотрел и утверждал что такое невозможно. Вроде элементарные вещи показывали когда по слову " О брикос" находит все "Абрикосы". Любой гугл это умеет. А это просто помесь фокса и Си в правильных пропорциях :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 19:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
А если я введу "Абрамс" - найдет "Абрикос" ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 20:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonА если я введу "Абрамс" - найдет "Абрикос" ? :) Нет. Количество ошибок ограничено. Читай про расстояние Левенштейна. Хотя ты и так знаешь не читая :) Следующий шаг - использовать релевантность. ЗЫ Правда получилось что "желтый" ~= "белый" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 20:10 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TВроде элементарные вещи показывали когда по слову " О брикос" находит все "Абрикосы". "Вспомним молодость" ... В середине 90-х в одной из организаций в шкафах "бухгалтеров" была тьма толстых подшивок с данными по основным фондам /газопроводы/. Так как данных была "тьма", то ни кто даже помыслить не смел, чтобы все это "богатство" можно было ввести в компьютер и тем более /о чудо/ он будет давать верные цифры. Но один амбициозный /был грех/ молодой парень сказал - "Хотите через 2 месяца у вас весь архив будет в компьютере и получать все желаемые вам отчеты в любых разрезах". Так как организация видела мои предыдущие работы, то они согласились на подписание договора ... А теперь самое интересное. Нужно было ввести не мало символьных данных /наименование улиц, тип, длина, ... труб ... ... Что сделал. Разработал на Foxpro алгоритм, который "на лету" пополнял базу введенных слов ... Так вот для ввода строки выше мне достаточно было ввести "ррбтл на Fpo агтм ктрй "на лту" плнл бзу ввх сов ...". Остальное на автомате находилось в базе слов и разворачивал в фразу "Разработал на Foxpro алгоритм, который "на лету" пополнял базу введенных слов ..." Были и еще трюки ... PS: "Теперь вы понимаете как мне в таких условиях легко работалось". Через два месяца заказчик и исполнитель поучили какдый то чего хотел ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 20:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Иной раз читая topics вижу буйную фантазию и фейерверк непоколебимо "истинных" суждений ... Иногда правда бывает желание "обсудить" их, но часто осаждаю себя мыслью типа - "Ты разве не знаешь чем все это закончится? Займись ка лучше Владимир текущей работой - больше толку будет" ... PS: Нет ну действительно иногда парни так настойчивы в своих "истинных" суждениях, что лучше к ним и "не подходить" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 20:54 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
AdxЗимаргл, Сравнивать визуальные оболочки, написанные на разных системах/языках, абсурдно. Я под С++ и C# напишу десяток разных интерфейсов с разными характеристиками. Сравнивать нужно одинаковый код, насколько это возможно, конечно. И уж визуальные библиотеки подходят для этого меньше всего. А то давайте тогда сравним MS Paint и Adobe Photoshop по памяти и скорости загрузки. Т.е ты не в состоянии написать одинаковое окошко на разных языках. Я понял. Балаболы не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 20:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Владимир2012PS: Нет ну действительно иногда парни так настойчивы в своих "истинных" суждениях, что лучше к ним и "не подходить" ... Да. Мы такие бро. Мы пережили Луговского с его С++срачем. Переварили Дедала с Базистом. Что-уж нам. А прикинь что Зимаргл и Adx - это один и тот-же человек. И спорит сам с собой... Мдя... И такое бывает. А ты думал тут фе. А тут Ооооо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 21:58 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглТы не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач. Большинство управляемых сред сразу выделяют пул памяти для приложения. За счёт этого дальшейшее выделение памяти под объекты происходит очень быстро. Именно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку. И пока в системе достаточно свободной памяти, дотнет не будет её отдавать. Но как только память кончится, ОС пнёт CLR, та станет пинать сборщик мусора, он проснётся и удалит мусор, и неиспользуемую память отдаст. Так что минимальный футпринт будет много меньше мегабайта. Если позарез необходимо, футпринт можно уменьшить вручную: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 00:13 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikБольшинство управляемых сред сразу выделяют пул памяти для приложения. За счёт этого дальшейшее выделение памяти под объекты происходит очень быстро. Именно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку. Вы имеете в виду, что нативный код отдельно дёргает системный вызов ради каждых шестнадцати байт? Не секрет ли, где Вы такой нативный код видели? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 00:40 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikИменно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку. И пока в системе достаточно свободной памяти, дотнет не будет её отдавать. [/src] А толку то? :) В нативном коде можно написать менеджер памяти, который порвет как тузик грелку этот дотнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 02:02 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Верно ли то, что на Java программист не может писать иначе как в ОО стиле ? Вот что BS пишет о С++: BS Язык программирования С++C++ создавался с целью добавления поддержки абстракции данных, объектно-ориентированного и обобщенного программирования к традиционному языку С с учётом указанных ограничений. Не подразумевалось принуждение всех пользователей к какому-либо конкретному стилю программирования. И если первое утверждение верно, и с учётом второй цитаты(в целом достаточно очевидной с точки зрения информативности, но от этого не менее важной), даже если бы программы на Java работали со скоростью аналогичной с С++(кто-то выше говорил, что 2, 2,5 раза ерунда, однако представьте если бы время отклика на каждую операцию на вашем домашнем компьютере увеличилось бы хотя бы в два раза), даже несмотря на это, С++ был бы предпочтительней. Я может быть что-то пропустил, а что создатели Java говорят о своём языке, если можно, процитируйте пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 02:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВерно ли то, что на Java программист не может писать иначе как в ОО стиле ? Выучишь Java - узнаешь. SashaMercuryИ если первое утверждение верно, и с учётом второй цитаты(в целом достаточно очевидной с точки зрения информативности, но от этого не менее важной), даже если бы программы на Java работали со скоростью аналогичной с С++(кто-то выше говорил, что 2, 2,5 раза ерунда, однако представьте если бы время отклика на каждую операцию на вашем домашнем компьютере увеличилось бы хотя бы в два раза), даже несмотря на это, С++ был бы предпочтительней.А зачем нам это представлять? Мы программами на Java пользуемся практически постоянно. Например все утилиты управления базами данных написаны на Java, ну кроме MSSQL для которой пишут на .Нет. Так проще делать кросс-платформенный код. Все телфоны и планшеты с Android внутри - java. Предпочтительней? Кому? Пользователям пофиг. Разработчикам - Java проще. Выиграем мы (пользователи) если все это будет переписано на С++? Ну да, пару-тройку микросекунд выиграем. А толку? SashaMercuryЯ может быть что-то пропустил, а что создатели Java говорят о своём языке, если можно, процитируйте пожалуйста.Открываешь учебник по Java и читаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 06:01 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
1. Если Java поддерживает только программирование с ОО стиле, то в этом плане этот язык однобок. Или у нас 99 % задач должны решаться в объектно-ориентированном стиле ? 2. Смотря какая операция, где-то мы проиграем пару микросекунд, а где-то несколько секунд. От этого факт не изменится, какое-то время мы потеряем практически на любых задачах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 06:20 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. Если Java поддерживает только программирование с ОО стиле, то в этом плане этот язык однобок. Или у нас 99 % задач должны решаться в объектно-ориентированном стиле ? Писать в процедурном стиле можно и на ОО языках. SashaMercury2. Смотря какая операция, где-то мы проиграем пару микросекунд, а где-то несколько секунд. От этого факт не изменится, какое-то время мы потеряем практически на любых задачах. Таких операций очень мало когда критично время. Если пишешь клиентскую часть - их всего 0,1%, зато куча кода типа "если нажали эту кнопочку - показать эту форму" и не критично покажется она за 50 мс или за 150 мс. Также не критично займет форма 1 Мб или 3 в памяти. А те критичные к времени и/или памяти 0,1% можно написать на чем-нибудь другом. Я пишу на С, делаю DLL и ее использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 07:22 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
[quot Dima T]SashaMercury1. Если Java поддерживает только программирование с ОО стиле, то в этом плане этот язык однобок. Или у нас 99 % задач должны решаться в объектно-ориентированном стиле ? Писать в процедурном стиле можно и на ОО языках. [quot] И Си в какой-то мере позволяет писать программы в ООС. Однако, BS, например, говорит: Язык поддерживает определенный стиль программирования в том случае, если он представляет средства которые делают использование данного стиля удобным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 07:27 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima TПисать в процедурном стиле можно и на ОО языках. И Си в какой-то мере позволяет писать программы в ООС. Однако, BS, например, говорит: Язык поддерживает определенный стиль программирования в том случае, если он представляет средства которые делают использование данного стиля удобным. Это не противоречит тому что я написал. Там не утверждается что в ОО языках неудобно писать в не ОО стиле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 07:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
FactorizepetalvikИменно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку. И пока в системе достаточно свободной памяти, дотнет не будет её отдавать. [/src] А толку то? :) В нативном коде можно написать менеджер памяти, который порвет как тузик грелку этот дотнет. Можно ускорить аллокации к примеру. При деаллокациях вам придётся выбрирать между расходом памяти и скоростью особождения и дефрагментации. Вобщем на любой аллокатор можно написать контр-пример его использования. Кстати вопрос написания умного аллокатора неизбежно приводит к появлению различного рода т.н. "умных указателей" и концепции GC. Круг обсуждения снова замкнётся на эффективных алгоритмах мусоросборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 08:25 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглAdxЗимаргл, Сравнивать визуальные оболочки, написанные на разных системах/языках, абсурдно. Я под С++ и C# напишу десяток разных интерфейсов с разными характеристиками. Сравнивать нужно одинаковый код, насколько это возможно, конечно. И уж визуальные библиотеки подходят для этого меньше всего. А то давайте тогда сравним MS Paint и Adobe Photoshop по памяти и скорости загрузки. Т.е ты не в состоянии написать одинаковое окошко на разных языках. Я понял. Балаболы не нужны. На WinApi? Без проблем. Вы не понимаете разницу между библиотекой, языком и платформой. Увы. Любителям сравнивать по скорости и цене автомобили Мерседес А класс и Ладу Калину - читать книжки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 10:42 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
softwarerВы имеете в виду, что нативный код отдельно дёргает системный вызов ради каждых шестнадцати байт? Не секрет ли, где Вы такой нативный код видели? :) Вижу в каждом первом приложении. FactorizeА толку то? :) В нативном коде можно написать менеджер памяти, который порвет как тузик грелку этот дотнет. В дотнете как раз и используется такой менеджер памяти. Да, его можно написать в неуправляемых языках, но это будет по сути то, что уже есть в управляемых средах. Где этот менеджер будет брать память? Из пула. Память под этот пул запрашивается у операционной системы на старте приложения. Оп-па! То есть футпринт приложения стал большим. Именно к большому футпринту дотнета были претензии. Так что либо расход памяти под пул (большой футпринт) и быстрое её выделение, либо медленное выделение и малый футпринт. К тому же по выделению памяти этот менеджер не порвёт дотнет. По освобождения - да, запросто. Там, где GC будет долго пыхтеть, в рукописном менеджере можно одним махом отдать весь этот пул обратно системе. А теперь главное: покажите мне менеджер памяти, который отдаст неиспользуемую в данный момент память по запросу ОС. Между тем CLR/JVM это сделают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 17:18 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Я прошу понять меня правильно. Я не пытаюсь оспорить тот факт, что нативный код быстрей управляемого. Это очевидно. Я не считаю, что управляемые среды лучше нативного кода. Я считаю, что они являются тупиковой ветвью развития в своём нынешнем виде и со временем должны умереть. Так же как интерпретаторы и динамически-типизированные языки. Однако, дотнет движется в правильную сторону. Не так давно появился .NET Native - компиляция в нативный код при развёртывании приложения. Ускоряет загрузку, улучшает быстродействие. При этом остаётся удобство управляемого кода во время разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 17:23 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalviksoftwarerВы имеете в виду, что нативный код отдельно дёргает системный вызов ради каждых шестнадцати байт? Не секрет ли, где Вы такой нативный код видели? :) Вижу в каждом первом приложении. Ну попробуйте посмотреть во второе, что ли. petalvikДа, его можно написать в неуправляемых языках, но это будет по сути то, что уже есть в управляемых средах. Уважаемый, как бы Вам сказать деликатно.... его не "можно написать в неуправляемых языках". Его "написали в них", причём задолго до того, как кому-то пришло в голову сделать "управляемые среды", если не считать такой Пи-систему . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 17:23 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonВладимир2012PS: Нет ну действительно иногда парни так настойчивы в своих "истинных" суждениях, что лучше к ним и "не подходить" ... Да. Мы такие бро. Мы пережили Луговского с его С++срачем. Переварили Дедала с Базистом. Что-уж нам. А прикинь что Зимаргл и Adx - это один и тот-же человек. И спорит сам с собой... Мдя... И такое бывает. А ты думал тут фе. А тут Ооооо! Данный пост найден средствами всемогущего Стебелька . Бойтесь, бойтесь бородатые Оракловоды ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 19:27 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Вот как раз по *выделению* памяти языки с GC однозначно рвут С++. Управляемый хип позволяет относительно перемещать данные в памяти, что сильно упрощает аллокацию. На каждый поток приложения выделяется свой буфер под аллокации и вперед. Никакой синхронизации не надо, искать подходящего размера "дырки" в выделенной памяти не надо. Просто увеличиваешь текущий указатель на нужный тебе размер и вперед. Когда буфер заканчивается, просто аллоцируется новый. А получившееся мессиво из аллоцированных и свободных кусков уплотняется дефрагментатором параллельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 19:40 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
softwarerего не "можно написать в неуправляемых языках". Его "написали в них", причём задолго до того, как кому-то пришло в голову сделать "управляемые среды" В неуправляемом коде по умолчанию память как будет выделяться? Может, всё-таки, нужно дополнительно менеджер памяти писать/брать откуда-то, для быстрой аллокации? LISP считаем управляемой средой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 20:48 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikВ неуправляемом коде по умолчанию память как будет выделяться? Ответ ровно тот же, что и для управляемого. Так, как по умолчанию работает менеджер памяти соответствующей RTL библиотеки. petalvikМожет, всё-таки, нужно дополнительно менеджер памяти писать/брать откуда-то, для быстрой аллокации? Сомневаюсь. Я ровно один раз в жизни видел менеджер памяти, который выделял память описанным Вами способом - через системные вызовы - и как раз его требовалось "откуда-то брать и специально подключать". В принципе, я допускаю, что где-то сохранились компиляторы, чьи RTL работают таким способом, но сомневаюсь в их распространённости. Впрочем, даже если так - не вижу смысла пол-дня ломать копья из-за "проблемы", которая решается за тридцать секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 21:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikЗимарглТы не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач. Большинство управляемых сред сразу выделяют пул памяти для приложения. За счёт этого дальшейшее выделение памяти под объекты происходит очень быстро. Именно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку. И пока в системе достаточно свободной памяти, дотнет не будет её отдавать. Но как только память кончится, ОС пнёт CLR, та станет пинать сборщик мусора, он проснётся и удалит мусор, и неиспользуемую память отдаст. Так что минимальный футпринт будет много меньше мегабайта. Это не совсем так. В WindowsXP и выше С++ CRT использует родной ОС менеджер хипа (::HeapAlloc() etc) . Не особо вижу, как надстройка CLR над этим же менеджером может что то ускорить ) Подтверждение этого можно увидеть, открыв исходники CRT. Далее, если верить Руссиновичу, по дефолту хип 1Мб. Соответственно, футпринт меньше можно сделать только в нативном коде, вмешиваясь в исходник CRT, и никак иначе. AdxЗимарглпропущено... Т.е ты не в состоянии написать одинаковое окошко на разных языках. Я понял. Балаболы не нужны. На WinApi? Без проблем. Вы не понимаете разницу между библиотекой, языком и платформой. Увы. Любителям сравнивать по скорости и цене автомобили Мерседес А класс и Ладу Калину - читать книжки. Если ты не понял, то мы и сравниваем Формулу1 в виде С++ и дНет как что то типа Ларгуса с прицепом на все случаи жизни. Первый результат я уже получил. Одинаковые приложения: на компилируемом языке имеет при загрузке 3х кратный выигрыш по ошибкам страниц по сравнению с JVM. Окошки SWT и там и там Допишу какие нибудь циклы и таймеры и посмотрю как прогрессирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 21:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petalvikLISP считаем управляемой средой? Лисп вообще-то был пионером в области управляемых куч (сред?). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 23:09 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглНе особо вижу, как надстройка CLR над этим же менеджером может что то ускорить это не надстройка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2015, 00:35 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглПервый результат я уже получил. Одинаковые приложения: на компилируемом языке имеет при загрузке 3х кратный выигрыш по ошибкам страниц по сравнению с JVM. Окошки SWT и там и там Допишу какие нибудь циклы и таймеры и посмотрю как прогрессирует. Тест для медитации Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. Принцип следующий: делается проекция файла в память и считается контрольная сумма. По сути загрузка фрэймворка технически тоже самое. Первый запуск Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Ошибок страниц 459291 Второй запуск Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Ошибок страниц 459290 Для тестов взял файл 895 Mb. Как видишь в первом случае первый расчет шел 8 сек, во втором 0,7 сек. Т.е. 7,3 сек в первый раз это чтение файла с диска, во второй - файл уже был в кэше виндовса. Ну и по расходу памяти: один процесс занимает ожидаемые 920 Мб. Запускаем одновременно 4 копии, каждая занимает по 920, у каждой по 459 тыс. ошибок страниц. Но памяти у меня всего 2,4 Гб свободно. При одновременно работающих 4 копиях размер свободной памяти падает с 2,4 Гб до 1,5 Гб. Т.е. физически в памяти одна копия, которая по очереди подсовывается в каждый процесс. Все тоже самое касается фрэймворка .Net/Java: если он уже в памяти, то расходы на его подсовывание в конкретный процесс незначительны. В нативном коде при вызове WinAPI происходит тоже самое. Это я все к тому что показатель "Ошибок страниц" ничего полезного не показывает. Есть такой параметр как "Ошибок страниц/сек", т.е. сколько было за последнюю секунду. Вот он более реально показывает насколько интенсивно используется подкачка с диска в конкретный момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2015, 09:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima T, спасибо за полезное исследование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2015, 09:05 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TВсе тоже самое касается фрэймворка .Net/Java: если он уже в памяти, то расходы на его подсовывание в конкретный процесс незначительны. В нативном коде при вызове WinAPI происходит тоже самое. Это я все к тому что показатель "Ошибок страниц" ничего полезного не показывает. Есть такой параметр как "Ошибок страниц/сек", т.е. сколько было за последнюю секунду. Вот он более реально показывает насколько интенсивно используется подкачка с диска в конкретный момент. "Ошибок страниц/сек" это именно "Ошибок страниц" деленное в секунду. Показывает тоже самое. Можешь запустить параллельное чтение двух, трех разных файлов - создашь конкуренцию за кэш. С программным кодом не совсем так - -во-первых там много несвязанных маленьких страничек -во-вторых есть сегменты данных, которые при записи в них создают копию в памяти для каждого процесса -в третьих, должны быть как минимум таблицы виртуализации для изменяемого кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2015, 10:02 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл"Ошибок страниц/сек" это именно "Ошибок страниц" деленное в секунду. Показывает тоже самое. Напутал немного, нет такого параметра вовсе, в 7-ке это "Дельта ошибок страниц", в хэлпе так написано "Изменение количества ошибок страницы со времени последнего обновления." ЗимарглМожешь запустить параллельное чтение двух, трех разных файлов - создашь конкуренцию за кэш. Могу, только речь о конкретной задаче, фрэймворк это одни теже файлы в разные процессы. ЗимарглС программным кодом не совсем так - -во-первых там много несвязанных маленьких страничек ИМХУ не принципиально. Подкачка из одного файла или из сотни. Зимаргл-во-вторых есть сегменты данных, которые при записи в них создают копию в памяти для каждого процесса -в третьих, должны быть как минимум таблицы виртуализации для изменяемого кода В нативном коде рантайм С/С++ тоже все это создает. WinAPI создает. Прочие либы (если используются) создают. Вопрос сколько это занимает в байтах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2015, 10:40 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Сводная табличка по использованию памяти разными фреймворками на примере мелких программ ProcessLanguageframeworksMem (Working Set)Mem (WS Private) KbMem (Virtual Size)Page FaultsxmlreaderC#.NET900817841248882440wpfapplicationC#.Net28400910023560010300snippet165.classJavaJDK7+SWT4.427484133684951568230snippet165.dDDMD2+SWT3.496441980914162486CardRaytracerDDMD21038427361118683757CardRaytracer (optimized)DGDC39921656678481016CardRaytracerC++gcc17087247212424CardRaytracerPascalFPC33080110454608785 Working set - реально используемая память WS private - память, используемая для каждого процесса из множества копий индивидуально Virtual Size - учитывает отмаппленную память всеми известными dll процесса (фреймворком) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 02:13 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл, ммм... даже не знаю какие выводы из этой таблички можно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 16:44 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonЗимаргл, ммм... даже не знаю какие выводы из этой таблички можно сделать.Какие бы не сделал - все бессмысленны. Можно сколько угодно утверждать что один язык лучше другого, но у того другого все равно будут приверженцы, просто потому что им нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 16:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зяма провёл офигенскую работу по анализу мемори. Учёл даже промахи страниц. Да только я не могу придумать как теперь это ранжировать. И почему разные приложения? Как их сопоставить? Как сравнить грузовик с легковушкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 17:57 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
mayton, Для начала - это не тест, это только разметка заготовки теста. Выводы рановато делать. Программы 2-4 и 5-8 имеют одинаковую или близкую функциональность. Пока намечаются следующие пути и вопросы: 1. засечь время загрузки и характеристики по памяти для каждого фреймворка, подгрузив определенный набор классов, например: окошко с элементами + коллекции + xml? + еще что? - обсуждается 1.1 что считать стандартным фреймворком? D = SWT + Phobos С# = .net core + WPF C++ = std:: + MFC? + boost? Java = Java SE + Swing || JavaFX ? 2. проверить путем создания и манипулирования сотнями объектов из п.1, влияет ли это на скорость и на своппинг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 20:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Зимаргл1. засечь время загрузки и характеристики по памяти для каждого фреймворка, подгрузив определенный набор классов, например: окошко с элементами + коллекции + xml? + еще что? - обсуждается 1.1 что считать стандартным фреймворком? D = SWT + Phobos С# = .net core + WPF C++ = std:: + MFC? + boost? Java = Java SE + Swing || JavaFX ? Объясни зачем мерять память клиентского приложения с гуем? Перфекционизм какой-то Могу еще понять борьбу за память на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 20:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Java в моём способе зарабатывания нефте-долларов - это 80% server-side. В некоторых случаях есть кросс-компилляторы типа GWT/GWTP которые стоят одной ногой в браузере у пользователя а другой опираются на некоторый стаб на серверной стороне. Но как таких мерять? Мемори футпринт в пользовательском браузере? Нонсенс! Его уже 10 лет никто не считает. Более того. Срут в него безбожно. И не будь в JScript искусственных ограничителей типа 2-4 сокетов на JS или лимита на циклы - то браузер бы умирал через 5 минут после начала серфинга. Поэтому здесь авторJava = Java SE + Swing || JavaFX ? я не понимаю что считать и как сравнивать. Написать 2 формочки тут и там - это профанация. Не будет теста. А если два крупных приложения - то никто не будет портировать в Свинг и ФХ. Ибо лень и нет мотива. Одно дело мы как фан-сектор сели и раскурили рисование блестящих шаров. А другое дело окна. Скушно... Мдя. Свинг останется как легаси которое выкинуть невозможно. Заменить нечем. JavaFX болеет тем же чем и апплеты. А именно отсутствием предназначения. Неясно для чего оно ПРЕДНАЗНАЧЕНО. Мультимедя явно уходит в HTML5. Там и специалистов больше. А ФХ - какой-то сыряк. Хотелось бы увидеть полноценное приложение на ФХ где есть гриды к оторых я стону и плачу в каждой ветке. Если кто покажет - буду рад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 20:22 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглC++ = std:: + MFC? + boost? Qt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 20:43 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
mayton, Для засечки времени подгрузки фреймворка достаточно и одного типа окошка. Можно конечно, оставить только невизуальные (серверные) классы, но я скорее думаю, что проблемы Явы шерифа не волнуют. maytonМемори футпринт в пользовательском браузере? Нонсенс! Его уже 10 лет никто не считает. А вот за это "пейсателей" надо на дыбу, т.к. каждое окошко хромиума это овер 100 Мб! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 20:43 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглДля засечки времени подгрузки фреймворка достаточно и одного типа окошка. Чево? И что нам даст это время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 20:46 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглА вот за это "пейсателей" надо на дыбу, т.к. каждое окошко хромиума это овер 100 Мб! Зачем? Есть FireFox. Гугл хром просто супер обнаглел в пожирании памяти, потому я отказался от хрома года 2-3 назад. Пишут что недавно они осознали и решают проблему прожорливости, пусть решают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 20:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИМХУ x64 это больше маркетинг. Попытка второй раз продать уже проданный софт, а потом еще и впарить более мощное железо, т.к. старое не тянет. Это чудесно, выгодно, но не тема для данного форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 21:03 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Dima TИМХУ x64 это больше маркетинг. фотошоп,СУБД легко утилизируют 2Gb+ памяти про регистры - отписал в соседем топике что касается применимости языков - у некоторых спецификаций и реализаций - серьёзные проблемы с массивами длиннее 2^31 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 22:16 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилDima TИМХУ x64 это больше маркетинг. фотошоп,СУБД легко утилизируют 2Gb+ памяти про регистры - отписал в соседем топике что касается применимости языков - у некоторых спецификаций и реализаций - серьёзные проблемы с массивами длиннее 2^31 Мы в 2004 юзали Oracle 9i на Xeon-ах с 8 Гб оперативы. При этом ОС и Оракл были 32х битные. Но buffer-pool юзал порядка 5Гб. OMG! Каг! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 22:47 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
mayton, ты ещё вспомни досовский EMM драйвер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 22:53 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonМы в 2004 юзали Oracle 9i на Xeon-ах с 8 Гб оперативы. При этом ОС и Оракл были 32х битные. Но buffer-pool юзал порядка 5Гб. OMG! Каг! AWE, что гемор. Второй вариант - не помню. 64-разрядный указатель позволяет окучивать большие объемы памяти простым и неизвращённым способом. P.S. У AS/400 указатель был 128 бит "от рождения". Никто не умирал. Но, правда, там другая схема отображения виртуальных адресов на физическую память. P.P.S. Нет, аппаратная разрядность AS/400 - те же 52 бита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2015, 17:30 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Изопропилmayton, ты ещё вспомни досовский EMM драйвер Уже вспомнил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2015, 17:37 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
В общем я дописал тестик. Mem (Working set). KB Mem (WS private). KB Page faults Creation time. ms Delete time. msJava1.7 54500 37200 37600 13850 800DMD2 32072 23300 8070 8450 660 Одна и та же программка. Просто создает 500 окон. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. Вывод - чем меньше тасуем памяти (с помощью фреймворка), тем быстрее работаем. Это еще у меня своппинг быстрый - SSD. P.S.Кому не лень - пробуйте переписать на .net. Думаю результат будет сравним с Явой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 20:39 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1340912]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
219ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 663ms |

| 0 / 0 |
