powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / О применимость языков
296 сообщений из 296, показаны все 12 страниц
О применимость языков
    #39038562
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять?

maytonRWolf, полностью согласен. Но вы навязываете мне "повестку дня". Тема embedded development
весьма интересна и обширна и заслуживает отдельного топика. Но здесь мы обсуждали другое.

Мы еще обсуждали real time в приборостроениии. Мои аппонеты высказывались:

- Real time OS не нужные понты.
- Так же, на марсоходах real time не нужна.
- VxWorks не нужна.
- NASA ошибается. =)
...
Рейтинг: 0 / 0
О применимость языков
    #39038583
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav, я считаю что фактор realtime

1) в науке и технике нужен и имеет место
2) должен учитываться при разработке низкоуровневых протоколов и механизмов взаимодействия ПО с внешним миром.
3) не имеет значения при формальном описании АЛГОРИТМОВ в общем понимании этого слова. Ни в одном
из известных описаний ИЗВЕСТНЫХ алгоритмов вы не найдете требований касающихся MemoryModel/GC,
JIT-компилляторов, трансляторов и уж тем более ремарок в сторону невозможности реализовать это Java.

Нет также научно подтвердённых работ которые доказывают невозможность реализовать на любом ЯП
то что реализовано на С++.

Кроме того некоторые товарищи которые часто и мн ого кодили в рилтайме теряют связь
с реальностью становятся идеалистами и строителями FVMas/Стебельков и тому подобного.
Я с такими часто и много общался. Опыт имею.

Полезность их разработок - под сомнением. Под сомнением также человеко-часы
и килокаллории которые на эту риалтаймовость тратятся.

P.S. Ваш покорный слуга также этим грешен в пятничных топиках и в поиске простых чисел. Но это
как говорицца just for fun и чем бы народ не тешился.
...
Рейтинг: 0 / 0
О применимость языков
    #39038600
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravМы еще обсуждали real time в приборостроениии.
Вот оно про что было :) походу мы разные вещи обсуждали.

Давай не будем по второму разу тут обсуждать. Если вопрос важен - заведи отдельный топик.
...
Рейтинг: 0 / 0
О применимость языков
    #39038618
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton3) не имеет значения при формальном описании АЛГОРИТМОВ в общем понимании этого слова. Ни в одном
из известных описаний ИЗВЕСТНЫХ алгоритмов вы не найдете требований касающихся MemoryModel/GC,
JIT-компилляторов, трансляторов и уж тем более ремарок в сторону невозможности реализовать это Java.
Собственно мы тогда весь вечер спорили ни о чем. Я с вашими словами абсолютно согласен. И сам постоянно повторял про возможность описания алгоритмов хоть на ассемблере МК-52, хоть на машине Тьюринга.

Я напирал на то, что некоторые алгоритмы абсурдно описывать на Java. Как вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум?

Но умно ли это?

Как описать RAII на C#? Ну можно воспользоваться оператором using (?) и методом Object.Dispose(). А если их нет в языке?
...
Рейтинг: 0 / 0
О применимость языков
    #39038659
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravКак описать RAII на C#?да нельзя описать алгоритм ни на одном ЯП, хоть C#, хоть на ассемблере МК-52. На них можно ( или нельзя ) алгоритм реализовать. По описанию, сделанному с помощью других средств.
Отличать пора бы уже описание от реализации.

PS На дворе стоит забор, а на нём мочало. Эта песня хороша - начинай с начала ))))
...
Рейтинг: 0 / 0
О применимость языков
    #39038670
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychpetravКак описать RAII на C#?да нельзя описать алгоритм ни на одном ЯП, хоть C#, хоть на ассемблере МК-52. На них можно ( или нельзя ) алгоритм реализовать. По описанию, сделанному с помощью других средств.
Отличать пора бы уже описание от реализации.
Ну вот. Так и нужно.

Но в терминах С++ я не просто опишу (в упрощенном варианте) любой алгоритм, я еще и на С++ запрограммирую любой алгоритм. Даже сборку мусора в C#.
...
Рейтинг: 0 / 0
О применимость языков
    #39038699
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmayton,

Кстати, действительно, опишите, пожалуйста, RAII на C#. Особенно в контексте локальных переменных.
Я к слову.. не глубокий специалист в шарпе. И сам термин RAII нетипичен и не так часто вобщем
используется. Думаю что он достоин отдельного топика.

Я люблю технически споры. Но в данном конкретном случае я-бы подождал спорить до тех пор пока
сам не разберусь в предмете спора.
...
Рейтинг: 0 / 0
О применимость языков
    #39038709
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЯ напирал на то, что некоторые алгоритмы абсурдно описывать на Java. Как вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум?
Я подозреваю что и я и многие здесь присутствующие нечитали исходников диспетчера потоков ОС Windows.
И поэтому о глубине и степени сложности мы можем иметь лишь приблизительное представление. Но если
вы опишите словами какие там трудности и с какими проблемами мы сталкиваемся то думаю какое-то решение
можно придумать.
...
Рейтинг: 0 / 0
О применимость языков
    #39038722
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravЯ напирал на то, что некоторые алгоритмы абсурдно описывать на Java. Как вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум?
Я подозреваю что и я и многие здесь присутствующие нечитали исходников диспетчера потоков ОС Windows.
И поэтому о глубине и степени сложности мы можем иметь лишь приблизительное представление. Но если
вы опишите словами какие там трудности и с какими проблемами мы сталкиваемся то думаю какое-то решение
можно придумать.
Я, конечно, тоже не читал тех исходников.

- 100% для оптимизации ядра там используется union.
- Так же любой вариант прямого доступа к памяти.
- В С/С++ достаточно просто встраивается асм-функция сохраняющая/восстанавливающая значения регистров процессора при переключении потоков.
- Управление драйверами в реальном времени.
- Переключение потоков через заданный квант времени.

Как на Яве это описать?

Можно конечно написать на псевдокоде (я не работал на Яве):
Код: plaintext
1.
DWord integralRegistrs[32];


И написать функцию сохранения контекста потока. Но вы где-то такое видели?
...
Рейтинг: 0 / 0
О применимость языков
    #39038725
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Да, в дополнению к union еще структуры с полями в виде битовых полей!

Модератор: Тема перенесена из форума "C++".
...
Рейтинг: 0 / 0
О применимость языков
    #39038746
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetrav, я тебе даже более скажу. В Java я не могу сделать swap(..) для двух строковых аргументов.
Но это не мешает мне успешно решать все возникающие бизнес-задачи. Честно говоря я очень разочарован
списком который ты привёл. Там нет алгоритмически нерешаемых вопросов. Есть технические limitations
которые ты искусственно ввёл. Ты требуешь от меня решать на Java некоторые технические задачи
но при этом заведомо ставишь ограничение на то как мне их решать. В этом есть некая натяжка.
Ты как-будто-бы во время игры меняешь правила игры.
Так не я ввёл эти ограничения. А жизнь.

Я просто говорю, что некоторые алгоритмы бессмысленно (но можно) описывать на языке некоторой ВМ, по определению ограниченной. По сравнению с С++, который ограничений не имеет.

maytonБолее развёрнуто я отвечу тебе на эти пункты чуть позже. Щас некогда.
Не очень жду, извини. Устал от спора.
...
Рейтинг: 0 / 0
О применимость языков
    #39038761
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

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

Пишу как я тебя услышал в том почищенном топике.
Ты утверждаешь: "есть задачи которые можно решить только на Си (реалтайм, ОС, драйвера и т.п.)", да, согласен, на высокоуровневых языках они не очень решаются, а то и вовсе не решаются.
Затем ты расширил свою мысль: "на С/С++ можно решать любую задачу которая решается, причем быстрее (как минимум не медленнее) чем на высокоуровневом ЯП", да, согласен, круг задач которые можно решать на С/С++ шире.
А вот дальше из этого ты делаешь абсолютно нелогичный вывод: "Все задачи НАДО решать на С/С++". С чего вдруг производителность конечного продукта стала единственной характеристикой оценки качества продукта?

Вот с этим последним выводом ни я ни другие учавствующие не согласны.
...
Рейтинг: 0 / 0
О применимость языков
    #39038774
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TА вот дальше из этого ты делаешь абсолютно нелогичный вывод: "Все задачи НАДО решать на С/С++". С чего вдруг производителность конечного продукта стала единственной характеристикой оценки качества продукта?
Вы что-то пропустили в том почищенном топике.

Например, серьезные задачи управления данными я рекомендовал решать на SQL (NoSQL тут не трогаем). Потому что получится и производительнее и быстрее в разработке.

Кроме того, я не призывал отказываться от Явы или Шарпа.
...
Рейтинг: 0 / 0
О применимость языков
    #39038777
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T С чего вдруг производителность конечного продукта стала единственной характеристикой оценки качества продукта?
Вот с этим последним выводом ни я ни другие учавствующие не согласны.
Как говорят Украинские болельщики - "Кто выше бье, тот краще грает"
...
Рейтинг: 0 / 0
О применимость языков
    #39038788
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератору.
Может быть так - "О применимости алгоритмических языков для описания алгоритмов"
...
Рейтинг: 0 / 0
О применимость языков
    #39038799
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravВы что-то пропустили в том почищенном топике.
возможно, там были очень размытые формулировки.

petravНапример, серьезные задачи управления данными я рекомендовал решать на SQL (NoSQL тут не трогаем). Потому что получится и производительнее и быстрее в разработке.

Кроме того, я не призывал отказываться от Явы или Шарпа.
Ну и чудненько. Вопросов больше не имею.
...
Рейтинг: 0 / 0
О применимость языков
    #39038811
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНет также научно подтвердённых работ которые доказывают невозможность реализовать на любом ЯП
то что реализовано на С++.
В начале 90-х на Foxpro сделал disassembler obj файлов.
Не помню правда мотивы почему решил написать на Foxpro ...
/тогда был QuickC http://vetusware.com/download/QuickC 2.51/?id=3503 и его часто использовал/
...
Рейтинг: 0 / 0
О применимость языков
    #39038824
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012maytonНет также научно подтвердённых работ которые доказывают невозможность реализовать на любом ЯП
то что реализовано на С++.
В начале 90-х на Foxpro сделал disassembler obj файлов.
Не помню правда мотивы почему решил написать на Foxpro ...
/тогда был QuickC http://vetusware.com/download/QuickC 2.51/?id=3503 и его часто использовал/
Вот видите. ФоксПро умер, а вы и мотивов своих не помните. =)

В начале 90-х я был школьником и у меня бы Спектрум, который загружался в интерпретатор Бейсика. Так я на Бейсике начал реализовывать свой язык программирования (после того как научился писать синтаксические анализаторы). А вот я помню почему прекратил: не было своих идей (я копировал бейсик на бейсике), работало медленно.

По ассемблеру тогда с литературой были проблемы. Зато на Спектруме еще до института выучил (кроме бейсика), Паскаль и Форт.
...
Рейтинг: 0 / 0
О применимость языков
    #39038832
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav- 100% для оптимизации ядра там используется union.
Очень странный тезис. Я знаком с Union и могу подтвердить что это замечательная штука.
В особенности в части доступа к bitfield. В некоторых ЯП нет концепции union.

Но я могу эмулировать работу с union используя целочисленные операции над int, long.
Платформа позволяет. Поэтому вобщем-то не вижу принципиальных ограничений.

Тезис был-бы сильнее в сравнении в PL/SQL машиной. Там - действительно нет
битовых операций и это создавало проблемы для криптографических функций
и функций кодирования.
...
Рейтинг: 0 / 0
О применимость языков
    #39038838
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЯ просто говорю, что некоторые алгоритмы бессмысленно (но можно) описывать на языке некоторой ВМ, по определению ограниченной. По сравнению с С++, который ограничений не имеет.

Как на на C++ будет выглядеть алгоритм(?)/макрос(?) в режиме компиляции берущий из СУБД структуру БД и проверяющий в компайл-тайме правильность SQL-запросов, записанных в коде в виде строк (не ORM)?
Я это к тому, что шаблоны C++ при всей их полноте по Тьюрингу не имеют средств ввода-вывода.
...
Рейтинг: 0 / 0
О применимость языков
    #39038841
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
struct S1
{
    int i;
    double d;
};

struct S2
{
    char c;
    char *cp;
};

union U
{
    S1 s1;
    S2 s2;
};



maytonНо я могу эмулировать работу с union используя целочисленные операции над int, long.
Платформа позволяет. Поэтому вобщем-то не вижу принципиальных ограничений.

Хорошо. Изначальный ваш посыл неверен, но опишите на Яве работу с со структурой с битовыми полями.
...
Рейтинг: 0 / 0
О применимость языков
    #39038843
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikpetravЯ просто говорю, что некоторые алгоритмы бессмысленно (но можно) описывать на языке некоторой ВМ, по определению ограниченной. По сравнению с С++, который ограничений не имеет.

Как на на C++ будет выглядеть алгоритм(?)/макрос(?) в режиме компиляции берущий из СУБД структуру БД и проверяющий в компайл-тайме правильность SQL-запросов, записанных в коде в виде строк (не ORM)?
Я это к тому, что шаблоны C++ при всей их полноте по Тьюрингу не имеют средств ввода-вывода.
Будет выглядеть как архив, в котором будет следующее:

- Исходники MySQL на С (или уже С++ ?).
- Мой скрипт на SQL.

А теперь попробуйте эти языки поменять местами. =)))
...
Рейтинг: 0 / 0
О применимость языков
    #39038847
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravХорошо. Изначальный ваш посыл неверен, но опишите на Яве работу с со структурой с битовыми полями.
Прошу регламента. Я сперва отвечу на то что обещал. А потом - комментарии. Имейте терпенье.
...
Рейтинг: 0 / 0
О применимость языков
    #39038854
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravФоксПро умер
Не умер, а стал менее используемым.
Не знаю хватит ли сил /в одиночку/ довести до production в целом ту программную технологию над
которой работаю, но поверьте - хорошее не забывается /в том смысле, что в Foxpro было воплощено много
интересных программных подходов/.

PS: Странные какие-то суждения на счет "умер" ...
Для разработчика важно не то как "раскручен" продукт, а какие программные технологии и идеи на нем
были воплощены ...

Да и при разработке не чураюсь использовать и php и javascript /когда это целесообразно/ ...
Например с использованием их написал программу, которая на основе данных из страниц MSDN генерировала
*.h, *.cpp wrapper libraries.
Вот к примеру привожу архив, содержащий текст одной /из десятков libraries/, которые генерировала программа.
...
Рейтинг: 0 / 0
О применимость языков
    #39038858
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravБудет выглядеть как архив, в котором будет следующее:

- Исходники MySQL на С (или уже С++ ?).
- Мой скрипт на SQL.

А теперь попробуйте эти языки поменять местами. =)))
petravНапример, серьезные задачи управления данными я рекомендовал решать на SQL
Вот чезанах? А потом пишешь
petravВы что-то пропустили в том почищенном топике.
Троллим? Парни пошлите его нах, не отвечайте, не кормите тролля.
...
Рейтинг: 0 / 0
О применимость языков
    #39038861
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВот чезанах? А потом пишешь
Троллим? Парни пошлите его нах, не отвечайте, не кормите тролля.
О Чёрт, какая у Вас агрессия! Просто успокойтесь, если не понимаете о чем речь. И, точно, лучше конкретно Вам уйти из ветки. =)))
...
Рейтинг: 0 / 0
О применимость языков
    #39038866
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravИ, точно, лучше конкретно Вам уйти из ветки.
Ни кому из ветки уходить не надо ...
Но и саблей махать налево и направо и рубить "не нужное" как бы тоже лишнее ...

Все таки неужели "словесно блок схемный" стиль описания алгоритмов - лучшее из всех возможностей.
Неужели академический мир не создал каких то спецификаций ...
Вот большие корпорации частенько разрабатывают свои внутренние стандарты для описания задач ...
Какие tools имеются для создания блок схем ...
Понятно что сам могу поискать в inet, но может кто поделится своим опытом ...
...
Рейтинг: 0 / 0
О применимость языков
    #39038873
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Все таки неужели "словесно блок схемный" стиль описания алгоритмов - лучшее из всех возможностей.
Неужели академический мир не создал каких то спецификаций ...
Создавал, что вы! Целый огромный язык создали — Unified Modeling Language .

В общем и целом проект провалился. Не набрал популярности.

Хотя на стартовом ажиотаже считался чуть ли не серебренной пулей. Должен был решить все проблемы в программировании. Упростить взаимодействие программистов с заказчиками. Некоторые даже мечтали об Executive UML — возможность программировать только лишь рисуя диаграммы (и, в мечтах, ничего не зная о программировании).
...
Рейтинг: 0 / 0
О применимость языков
    #39038875
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пропустил начало, видимо тема вырезана откуда то.

Пишу исключительно в реалтайме. Позавчера смотрел для интереса - алгоритм ЛСУ отрабатывается 1.6мс гарантированно.

Любая система с GC по определению не является РТ. Обоснование было уже давно, примерно когда создавали microJava.

А в чем вопрос то?
...
Рейтинг: 0 / 0
О применимость языков
    #39038882
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглА в чем вопрос то?
Утверждение моих оппонентов изначально выглядело так: любой алгоритм можно описать на чём угодно, хоть на блок-схемах, хоть на Яве (с сборщиком мусора).

Я в общем, был согласен. Но уточнил, что некоторые алгоритмы глупо и бессмысленно описывать на языке виртуальной машины. В том числе риалтайм алгоритмы, прямой доступ к памяти.

Постепенно в споре моё утверждение расширилось: любой алгоритм можно описать и запрограммировать на С++, а Ява и C# ограничены виртуальной машиной.

Мои оппоненты утверждают: Ява ограничений не имеет в области формального описания алгоритмов.

С тех спор и спорим.
...
Рейтинг: 0 / 0
О применимость языков
    #39038887
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто спорит, пусть идет читать Кнута "Исскусство программирования"
...
Рейтинг: 0 / 0
О применимость языков
    #39038888
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravС тех спор и спорим.
Диалог много лучше ...

https://ru.wikipedia.org/wiki/UML
https://ru.wikipedia.org/wiki/CASE

Использовал кто?
Насколько эффективно их использование ... ... ...
Возможно ли применить эти технологии при разработке на C и C++?
...
Рейтинг: 0 / 0
О применимость языков
    #39038899
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012petravС тех спор и спорим.
Диалог много лучше ...

https://ru.wikipedia.org/wiki/UML
https://ru.wikipedia.org/wiki/CASE

Использовал кто?
Насколько эффективно их использование ... ... ...
Возможно ли применить эти технологии при разработке на C и C++?
Я использовал на работе UML. Хороший инструмент. Но никакого конкурентрого преимущества при проектировании не даёт. Можно заменить блоксхемами, школьной доской, MS Word. В плане же документирования совсем не исключает написания текстовой документации.

Термин UML пропал из эфира лет 10-15-ть назад. Вместе с CASE.

Да, с С++ использовать можно. UML — это язык моделирования ООП.
...
Рейтинг: 0 / 0
О применимость языков
    #39038922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav- Так же любой вариант прямого доступа к памяти.

Мы живём в эпоху виртуализации. Виртуальной стала память. Адресация.
Если вы покупаете хостинг. То в 99% случаев вы покупаете виртуальную
машину в контейнере Xen/VBox/HPUx Containers/Defence Zones. И как, через
какой механизм или через какой стек технологий она видит память одному
админу известно. Если вы - кодер технологий MS.Net, Java, Python, Perl, PHP,
то у вас нет задач адресуемого доступа ко всей памяти. Для буферов I/O
и различных алгоритмических идей есть возможность аллоцировать байтовый
массив и решать задачу в рамках имеющейся относительной адресации.

Я не знаю сегодня задач кроме собственно создания ОС и аллокатора памяти
которая требует в обязательном порядке т.н. прямого доступа. Собственно
прямой доступ к памяти по степени необходимости и целесообразности
граничит с доступом к физическим секторам HDD. Это вызывает удивление
и здравые вопросы о смыслах.

И я думаю что 9 из 10 разработчиков способны прожить длинную и счастливую
жизнь но так и не озадачиться подобным вопросом.

Кроме того ЕМНИП вопрос звучал в контексте создания т.н. диспетчера потоков Windows.
Очевидно в этом есть какой-то смысл. Нужно у автора уточнить.
...
Рейтинг: 0 / 0
О применимость языков
    #39038924
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКроме того ЕМНИП вопрос звучал в контексте создания т.н. диспетчера потоков Windows.
Очевидно в этом есть какой-то смысл. Нужно у автора уточнить.Нет, диспетчер потоков был (и есть) в другом топике.
А тут вопрос изначально звучал:
- данные можно организовать вот так <пример на Java>
- не хочу учить Java потому что она на виртуальной машине основана а значит тормозная.
- а как это влияет на формальные структуры и алгоритмы?
И вот тут-то наш тролль и проснулся.
...
Рейтинг: 0 / 0
О применимость языков
    #39038927
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
- В С/С++ достаточно просто встраивается асм-функция сохраняющая/восстанавливающая значения регистров процессора при переключении потоков.
Нужно плясать от постановки. Мне в жизни не приходилось кодить свой менеджер
потоков поэтому я и не знаю для чего вы требуете "очень простого встраивания
асм-функций". Возможно вы бравируете связью С++ и архитектуры.

Но давайте будем честными. С++ также из коробки не пригоден для решения этой
задачи влоб. В любом случае мы будем исследовать варианты конкретных целевых
архитектур, операционок и компилляторов и подпиливать напильником С++ с разных
сторон, наполнять ваше приложение проверкой макросов, формировать сборочные
скрипты и различные варианты окружений. Тот же АСМ может быть разным. И это делает
задачу нетривиальной. И даже сам термин "поток" имеет варианты толкований. В некоторых
ОС он вырождается в process с shared-memory, в некоторых процесс не существует
без 1 потока.
...
Рейтинг: 0 / 0
О применимость языков
    #39038931
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav- Управление драйверами в реальном времени.

Здесь я в недоумении. Как управлять драйверами в реальном времени.
Возможно это прозрачный намёк на ваши знания и навыки. Возможно
вы знаток QNX, и микроядерных архитектур и несете некое тайное
знания. Возможно есть задачи сродни полётов на Марс где очень
важно . Или нет жизненно важно выгружать и обновлять драйверы
без приостановки full-cycle эксплуатации ОС но я к сожалению
с такими задачами не сталкивался и наверное так и не столкнусь.

Но если у вас есть ценный пример тык скысть из best practices
по driver management то озвучте его плиз и мы вместе обсудим.

Мне пока достаточно Java Plugin, ClassLoader, OSGI.

В Windows я дрова ставлю как обычный пользователь а в Unix
системах мне дрова ставят девопсы и прочие люди которые
за это получают деньги.
...
Рейтинг: 0 / 0
О применимость языков
    #39038933
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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++.
...
Рейтинг: 0 / 0
О применимость языков
    #39038935
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetrav
- В С/С++ достаточно просто встраивается асм-функция сохраняющая/восстанавливающая значения регистров процессора при переключении потоков.
Но давайте будем честными. С++ также из коробки не пригоден для решения этой задачи влоб.

Подписываюсь под этим.
Если в C++ разрешается вставить код на asm и при этом продолжаем считать его кодом C++, то в C# (виртуальная машина, сборщик мусора, все дела) должно разрешаться вызвать код на C++ (для недотнетчиков сразу скажу: это делается через так называемый PInvoke одной строкой кода) и при этом будем продолжать считать это кодом C#.
...
Рейтинг: 0 / 0
О применимость языков
    #39038936
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

Прошу вас ознакомиться и принять к сведению.
...
Рейтинг: 0 / 0
О применимость языков
    #39038938
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглПропустил начало, видимо тема вырезана откуда то.Да, тема вырезана.

ЗимарглЛюбая система с GC по определению не является РТ.
Я берусь с этим поспорить ;).
Запускаем две системы с GC, выполняющие одну работу. Когда в одной из них подходит время сборки мусора (GC выдаст заранее событие об этом) вся работа возлагается на вторую систему. Когда первая соберёт мусор, снова подключается к работе. Может уйти на сборку вторая.
Собственно, так давно уже делается.
...
Рейтинг: 0 / 0
О применимость языков
    #39038939
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЯ уж не говорю о том, что вы не знаете, что такое union и битовые поля в С++.

Вы - напористый малый. Я действительно их спутал со struct.
...
Рейтинг: 0 / 0
О применимость языков
    #39038940
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВозможно вы бравируете связью С++ и архитектуры.
Вот! Совершенно верно! Именно об этом я и говорю.

Кроме того на С++ реализованы все ВМ, все ОС и т.д.

На С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ.
...
Рейтинг: 0 / 0
О применимость языков
    #39038944
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЯ не знаю что вам сказать, если вы ставите знак равно между массивом байтов в .NET и массивом байтов в native C++.
Где я ставлю знак равно?
...
Рейтинг: 0 / 0
О применимость языков
    #39038947
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravЯ уж не говорю о том, что вы не знаете, что такое union и битовые поля в С++.

Вы - напористый малый. Я действительно их спутал со struct.
Их и спутать то нельзя. Упрощая (очень упрощая):

- union это несколько структур в одной структуре (одной области памяти).
- bit set - это последовательность упакованная (на уровне битов) в памяти разных типов данных данных (встроенных) размер которых мы ограничиваем количеством битов.
...
Рейтинг: 0 / 0
О применимость языков
    #39038949
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravКроме того на С++ реализованы все ВМ, все ОС и т.д.
Не все. Запросто можно написать на огромном количестве языков.
Тот же GC для дотнета был изначально написан на Лиспе.
На диалекте C# были написаны ОСи Singularity и Midori.

petravНа С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ.
С 90-х годов прошлого века существуют процессоры, аппаратно выполняющие байт-код Java. Попробуй решить на них что-нибудь на C++. :D
...
Рейтинг: 0 / 0
О применимость языков
    #39038951
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ конце концов я могу
эмулировать процессор и с помощью счётчиков тактов, continuations,
и используя имеющийся механизм multithreading реализовать модель
процессора x86 и эмулировать кванты времени и весь прочий
нужный вам функционал.

И поскольку в данном вопросе вы не информированы то я делаю вам одолжение
и информирую вас. Что технически, задача эмуляции процессора и ОС на Java
сегодня уже решена.

Я даю вам ссылку на проект jDoxBox. Это ОС MS-DOC + стек x86 технологий
реализованных как обычное java приложение.
Так об этом я вам всегда и говорил! Даже есть на JS (в браузере) эмулятор Спектрума.

Что, что бы описывать системные алгоритмы в Яве вам внутри ВМ придется создать свою другую ВМ. И в рамках её описывать системные алгоритмы.

Но к современным процессорам, восокопроизводительным вычислениям, реал-тайму это не будет иметь никакого отношения.
...
Рейтинг: 0 / 0
О применимость языков
    #39038953
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikpetravКроме того на С++ реализованы все ВМ, все ОС и т.д.
Не все. Запросто можно написать на огромном количестве языков.
Тот же GC для дотнета был изначально написан на Лиспе.
На диалекте C# были написаны ОСи Singularity и Midori.

Конечно он ошибается. Операционки писались всегда на "C". Собственно ради этого
и был создан первый компиллятор. На плюсах был написан ЕМНИП BeOS та и тот
уже приказал долго жить.

Насчёт ВМ - не готов щас спорить. Но можно поднять исходники OpenJDK к примеру
и глянть что к чему.
...
Рейтинг: 0 / 0
О применимость языков
    #39038956
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravк современным процессорам, восокопроизводительным вычислениям, реал-тайму это не будет иметь никакого отношения.
Вот интересный ты человек. Тоесть ты сам будешь решать что реалтайм а что не реалтайм.
...
Рейтинг: 0 / 0
О применимость языков
    #39038957
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikpetravКроме того на С++ реализованы все ВМ, все ОС и т.д.
Не все. Запросто можно написать на огромном количестве языков.
Тот же GC для дотнета был изначально написан на Лиспе.
На диалекте C# были написаны ОСи Singularity и Midori.
Про GC на Лиспе - ссылку на сайт Майкрософта, пожалуйста. А сам Лисп, конечно, был реализован на С/С++.
Тот проект Microsoft Reserch ничем не закончился.

petalvikpetravНа С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ.
С 90-х годов прошлого века существуют процессоры, аппаратно выполняющие байт-код Java. Попробуй решить на них что-нибудь на C++. :D
Я еще слышал про Лисп-процессоры. Но где они? В 90-х?
...
Рейтинг: 0 / 0
О применимость языков
    #39038958
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravКроме того на С++ реализованы все ВМ, все ОС и т.д.Врушка, большинство написано Си.
Да и начиная со времен пентиума виртуализация поддерживается на уровне CPU практически во всех процессорах. То есть примерно с начала 90-х ты практически не можешь залезть в память напрямую вообще, даже на нулевом кольце. Любое обращение к памяти идет через VT встроенную в процессор.


petravНа С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ.Да, да. Ты уже утверждал как-то что программа на С++ не будет работать в VitualBox, потому-что там ВМ.
...
Рейтинг: 0 / 0
О применимость языков
    #39038962
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetalvikпропущено...

Не все. Запросто можно написать на огромном количестве языков.
Тот же GC для дотнета был изначально написан на Лиспе.
На диалекте C# были написаны ОСи Singularity и Midori.

Конечно он ошибается. Операционки писались всегда на "C". Собственно ради этого
и был создан первый компиллятор. На плюсах был написан ЕМНИП BeOS та и тот
уже приказал долго жить.

Насчёт ВМ - не готов щас спорить. Но можно поднять исходники OpenJDK к примеру
и глянть что к чему.
Конечно, я в данном споре понимаю С как подмножество С++. Хотя знаю, что современный С обладает возможностями которых нет в С++. В прочем, как и "не современный" С. В общем, это языки одной сути, в кавычках.
...
Рейтинг: 0 / 0
О применимость языков
    #39038963
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЯ еще слышал про Лисп-процессоры. Но где они? В 90-х?
Пора подключать тяжёлую артиллерию. Может щас Илья сюда заглянет
и шандарахнет тебя CommonLisp и Closure-ом?
...
Рейтинг: 0 / 0
О применимость языков
    #39038965
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravк современным процессорам, восокопроизводительным вычислениям, реал-тайму это не будет иметь никакого отношения.
Вот интересный ты человек. Тоесть ты сам будешь решать что реалтайм а что не реалтайм.
Нет, доверимся разработчикам QNX. ОС написана на С.
...
Рейтинг: 0 / 0
О применимость языков
    #39038967
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmaytonпропущено...

Вот интересный ты человек. Тоесть ты сам будешь решать что реалтайм а что не реалтайм.
Нет, доверимся разработчикам QNX. ОС написана на С.
А когда я играю в Minix (Android 4.2) это реалтайм?
...
Рейтинг: 0 / 0
О применимость языков
    #39038971
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlpetravКроме того на С++ реализованы все ВМ, все ОС и т.д.Врушка, большинство написано Си.
Да. Мне до бесконечности писать аббревиатуру С/С++? Кстати, GCC недавно вроде переписан на С++, это не ОС. =)

White OwlДа и начиная со времен пентиума виртуализация поддерживается на уровне CPU практически во всех процессорах. То есть примерно с начала 90-х ты практически не можешь залезть в память напрямую вообще, даже на нулевом кольце. Любое обращение к памяти идет через VT встроенную в процессор.
Только эта виртуальная память имеет слабое отношение к тому как ты с памятью может обращаться в ВМ. Разные уровни, но уже не процессора.

White OwlpetravНа С++ можно решить все задачи и реализовать все алгоритмы. Но в рамках ВМ вы ограничены ВМ.Да, да. Ты уже утверждал как-то что программа на С++ не будет работать в VitualBox, потому-что там ВМ.
Это ты рассказывал, что вот мы написали прогу на С++, а она под VitualBox не запустилась. =)
...
Рейтинг: 0 / 0
О применимость языков
    #39038976
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravпропущено...

Нет, доверимся разработчикам QNX. ОС написана на С.
А когда я играю в Minix (Android 4.2) это реалтайм?
Minix — это в твоем понимании игра? Я в них не ориентируюсь.

В моем понимании Minix — это операционная система микроядерная. Применения не нашла, кроме лекций уважаемого профессора Таненбаума. Андроид — ядро Linux. Ничего из этого к реал-тайму отношения не имеет (кроме, возможно LinuxRT).
...
Рейтинг: 0 / 0
О применимость языков
    #39038979
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravMinix — это в твоем понимании игра? Я в них не ориентируюсь.

В моем понимании Minix — это операционная система микроядерная. Применения не нашла, кроме лекций уважаемого профессора Таненбаума. Андроид — ядро Linux. Ничего из этого к реал-тайму отношения не имеет (кроме, возможно LinuxRT).
Вот Minix. Это ТВ-приставка на базе Android.
http://www.minix.com.hk/Products/MINIX-NEO-X5mini-ANDROID.html

Нет мне с этого момента еще интереснее. Ты можешь не бравируя громкими брендами Линуксов
дать мне своё определение реал-тайма?

Как инженер. Своими словами.

Ну-же. Смелее.
...
Рейтинг: 0 / 0
О применимость языков
    #39038980
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТолько эта виртуальная память имеет слабое отношение к тому как ты с памятью может обращаться в ВМ. Разные уровни, но уже не процессора.Это ты рассказывай тем кто ни разу не писал своих менеджеров памяти. Авось поверят.

petravЭто ты рассказывал, что вот мы написали прогу на С++, а она под VitualBox не запустилась. =)Врунишка.
Даже жаль что я потер все твои перлы, и хотелось бы ткнуть тебя носом в них, но все равно ж отвертишься.
...
Рейтинг: 0 / 0
О применимость языков
    #39038981
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetrav- Управление драйверами в реальном времени.

Здесь я в недоумении. Как управлять драйверами в реальном времени.
Предоставить возможность драйверу сесть на аппаратное прерывание таймера. Или снять его от туда. Только не в твоей ВМ реализованной в JVM, а на реальном железе.
...
Рейтинг: 0 / 0
О применимость языков
    #39038983
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmaytonпропущено...

Здесь я в недоумении. Как управлять драйверами в реальном времени.
Предоставить возможность драйверу сесть на аппаратное прерывание таймера. Или снять его от туда.И это ты называешь управлением?

petrav Только не в твоей ВМ реализованной в JVM, а на реальном железе.Еще раз повторяю свой оригинальный вопрос: Если мы написали драйвер (пусть на С++) способный садится на аппаратное прерывание таймера. Этот драйвер сможет работать внутри ВМ реализованной в JVM или нет?
...
Рейтинг: 0 / 0
О применимость языков
    #39038984
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmaytonпропущено...

Здесь я в недоумении. Как управлять драйверами в реальном времени.
Предоставить возможность драйверу сесть на аппаратное прерывание таймера. Или снять его от туда. Только не в твоей ВМ реализованной в JVM, а на реальном железе.
Друг. Это не Алгоритмическая задача. Здесь нет проблемы алгоритмизации. Я еще раз
тебя одёргиваю. Любые задачи сопряжения с внешним миром имеют своё коробочное
решение в Java через JNI. Пойми наконец.

Если ты ратуешь за архитектурные недостатки Java - ОК. Опиши мне проблему в терминах
необходимости и я пойму. Но только не придумывай синтетические постановки где еще
JVM не может какой порт прочитать и какую ячейку памяти. Это НЕ проблема алгоритмов.
Это ВОПРОС API.
...
Рейтинг: 0 / 0
О применимость языков
    #39038986
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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?
...
Рейтинг: 0 / 0
О применимость языков
    #39038987
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНет мне с этого момента еще интереснее. Ты можешь не бравируя громкими брендами Линуксов
дать мне своё определение реал-тайма?

Как инженер. Своими словами.
Как программист.

Есть черный ящик.

По ТЗ на его вход подаётся сигнал типа S1 и в ТЗ написано: ответ на S1 не более N долей секунд. В испытаниях на жесткое реальное время, если хотя бы раз лимит времени превышен, то это брак.

В испытаниях на мягкое реальное время, иногда черный ящик может запаздывать, но является рабочим ящиком. Только после определенного заданного по ТЗ процента пропусков он становится браком.
...
Рейтинг: 0 / 0
О применимость языков
    #39038988
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravПо ТЗ на его вход подаётся сигнал типа S1 и в ТЗ написано: ответ на S1 не более N долей секунд. В испытаниях на жесткое реальное время, если хотя бы раз лимит времени превышен, то это брак.

В испытаниях на мягкое реальное время, иногда черный ящик может запаздывать, но является рабочим ящиком. Только после определенного заданного по ТЗ процента пропусков он становится браком.
Друг. А вот если мой андроид за 1/30 долю секунды успевает декодировать 1 кадр FullHD фильма. Переключить
front-back buffer, и продолжить декодировать следующий кадр еще через 1/30 часть секунды.

Можно ли утверждать что я имею устройство реального времени? Я ведь смотрю кино плавно и без jitter-а?
...
Рейтинг: 0 / 0
О применимость языков
    #39038989
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВрунишка.
Даже жаль что я потер все твои перлы, и хотелось бы ткнуть тебя носом в них, но все равно ж отвертишься.

1. Уважаемый модератор, на будущее, не три посты, а сразу переноси их сюда.
2. Я не хочу ругаться, а следовательно не хочу отвечать человеку с такими пренебрежительными обращениями ко мне.

Профит? :)
...
Рейтинг: 0 / 0
О применимость языков
    #39038990
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravПо ТЗ на его вход подаётся сигнал типа S1 и в ТЗ написано: ответ на S1 не более N долей секунд. В испытаниях на жесткое реальное время, если хотя бы раз лимит времени превышен, то это брак.

В испытаниях на мягкое реальное время, иногда черный ящик может запаздывать, но является рабочим ящиком. Только после определенного заданного по ТЗ процента пропусков он становится браком.
Друг. А вот если мой андроид за 1/30 долю секунды успевает декодировать 1 кадр FullHD фильма. Переключить
front-back buffer, и продолжить декодировать следующий кадр еще через 1/30 часть секунды.

Можно ли утверждать что я имею устройство реального времени? Я ведь смотрю кино плавно и без jitter-а?
Мягкое реальное время (ты можешь не замечать эпизодический пропуск кадров). Которое в любой момент может перейти в состояние брака (тормоза). Ведь это консьюмерское устройство.

Т.е. там где речь идет о жизни людей, но допустим черный ящик с мягким реальным временем, твоё устройство не применимо.
...
Рейтинг: 0 / 0
О применимость языков
    #39038993
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikА на чём писали ОСи до появления Си? Неужто компы появились одновременно с появлением C?
За ссыку про первый GC на Лиспе - спасибо ознакомлюсь.

А по поводу прочего. А вы знаете? Какие там первые ОС на Си? Вот первый программист на планете — Ада Лавлейс — программировала на компьютере, который даже не получилось воплотить в железе (могу в деталях ошибаться).

Какие уж тут ОС на Си.
...
Рейтинг: 0 / 0
О применимость языков
    #39038996
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravWhite OwlВрунишка.
Даже жаль что я потер все твои перлы, и хотелось бы ткнуть тебя носом в них, но все равно ж отвертишься.

1. Уважаемый модератор, на будущее, не три посты, а сразу переноси их сюда.
2. Я не хочу ругаться, а следовательно не хочу отвечать человеку с такими пренебрежительными обращениями ко мне.

Профит? :)1. Сейчас я простой человек. Можешь больше не боятся страшного меня.
2. Пока ты передергиваешь и перевираешь чужие слова - тебя будут считать врунишкой (как минимум).

На вопрос 18084331 ответишь или так и будешь юлить?
...
Рейтинг: 0 / 0
О применимость языков
    #39038998
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravпропущено...

Предоставить возможность драйверу сесть на аппаратное прерывание таймера. Или снять его от туда. Только не в твоей ВМ реализованной в JVM, а на реальном железе.
Друг. Это не Алгоритмическая задача. Здесь нет проблемы алгоритмизации. Я еще раз
тебя одёргиваю. Любые задачи сопряжения с внешним миром имеют своё коробочное
решение в Java через JNI. Пойми наконец.

Если ты ратуешь за архитектурные недостатки Java - ОК. Опиши мне проблему в терминах
необходимости и я пойму. Но только не придумывай синтетические постановки где еще
JVM не может какой порт прочитать и какую ячейку памяти. Это НЕ проблема алгоритмов.
Это ВОПРОС API.
Я устал. Снова. Пусть это будет вопрос API и возможности в Яве отключить GC. Но тогда Ява превратится в С++. =)

Кроме того, ну как сказать то... Это примерно как научится копать землю лопатой и думать, что вот тут же сядешь за комбайн или экскаватор. Разные условия порождают разные алгоритмы. И в современной Яве ты просто не можешь оказаться в определенных условиях. Но делаешь выводы космического масштаба и космической же... (с).
...
Рейтинг: 0 / 0
О применимость языков
    #39039001
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl2. Пока ты передергиваешь и перевираешь чужие слова - тебя будут считать врунишкой (как минимум).
Считай меня хоть Слава КПСС, который вообще не человек. =)))

Но не называй меня так (долгое время). Тогда продолжим общение.
...
Рейтинг: 0 / 0
О применимость языков
    #39039003
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravВот первый программист на планете — Ада Лавлейс — программировала на компьютере, который даже не получилось воплотить в железе (могу в деталях ошибаться).

Какие уж тут ОС на Си.
Дык о том и речь. Ада писала программы для несуществующего реально компьютера задолго до появления Си. То есть изначальный посыл про то, что всё пишется на C/C++ ошибочен.

P.S. Раз уж вспомнили первую в мире женщину-программист (и вообще первый в мире программист!), мне также вспомнилось, как американский учёный-физик Ричард Фейнман писал про расчёты атомной бомбы на механических арифмометрах. Операторами этих машинок были девушки. Не, вы представляете себе этот процесс программирования? Берёшь за талию Бетти: "Ты у нас будешь сумматором", - ведёшь её к нужному арифмометру. Берёшь за талию Тутси: "Ты у нас будешь умножителем", - ведёшь её. Эх, вот где было классное программирование! А сейчас - биты, байты, объекты, паттерны... Скукота :(
...
Рейтинг: 0 / 0
О применимость языков
    #39039010
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikpetravВот первый программист на планете — Ада Лавлейс — программировала на компьютере, который даже не получилось воплотить в железе (могу в деталях ошибаться).

Какие уж тут ОС на Си.
Дык о том и речь. Ада писала программы для несуществующего реально компьютера задолго до появления Си. То есть изначальный посыл про то, что всё пишется на C/C++ ошибочен.
В современном смысле посыл практически безошибочен. Исключения подтверждают практику. Проект Microsoft Reserch в плане ОС провалился.

А Ада была красивой женщиной и без Си. А Бебридж вообще молодец. :) И мы помним историю.
...
Рейтинг: 0 / 0
О применимость языков
    #39039012
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikP.S. Раз уж вспомнили первую в мире женщину-программист (и вообще первый в мире программист!), мне также вспомнилось, как американский учёный-физик Ричард Фейнман писал про расчёты атомной бомбы на механических арифмометрах. Операторами этих машинок были девушки. Не, вы представляете себе этот процесс программирования? Берёшь за талию Бетти: "Ты у нас будешь сумматором", - ведёшь её к нужному арифмометру. Берёшь за талию Тутси: "Ты у нас будешь умножителем", - ведёшь её. Эх, вот где было классное программирование! А сейчас - биты, байты, объекты, паттерны... Скукота :( https://en.wikipedia.org/wiki/Human_computer
Так что нет, они все были полноценными компьютерами.
...
Рейтинг: 0 / 0
О применимость языков
    #39039014
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТ.е. там где речь идет о жизни людей
Лень искать ссылку (но если припечёт - найду). В Штатах была история с рентгеновским аппаратом, софт для которого был написан на чистом ассемблере. Из-за багов он облучил смертельными дозами немало людей.
...
Рейтинг: 0 / 0
О применимость языков
    #39039016
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl https://en.wikipedia.org/wiki/Human_computer
Так что нет, они все были полноценными компьютерами.
Ага, действительно.
Но, вроде бы, каждая выполняла своё действие и результат передавался дальше по цепочке на карточке.
Но не суть. Суть в том, что каждая была полноценной женщиной!
...
Рейтинг: 0 / 0
О применимость языков
    #39039018
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikpetravТ.е. там где речь идет о жизни людей
Лень искать ссылку (но если припечёт - найду). В Штатах была история с рентгеновским аппаратом, софт для которого был написан на чистом ассемблере. Из-за багов он облучил смертельными дозами немало людей.
Ассемблер — это тоже не синоним реал-тайма (или я вас неправильно понял?).

Реал-тайм — это сочетание алгоритма (в первую очередь) и средства реализации.

А уж багов в ассемблерном коде наделать легче чем в С/С++. Поэтому и существуют ОСРВ.

ЗЫ: Есть еще история как Windows NT чуть не потопил американский ракетный крейсер. Просто из-за деления на ноль слетело клиентское ПО и у крейсера отключились двигатели. А винда работала нормально.
...
Рейтинг: 0 / 0
О применимость языков
    #39039031
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petravmaytonНет мне с этого момента еще интереснее. Ты можешь не бравируя громкими брендами Линуксов
дать мне своё определение реал-тайма?

Как инженер. Своими словами.
Как программист.

Есть черный ящик.

По ТЗ на его вход подаётся сигнал типа S1 и в ТЗ написано: ответ на S1 не более N долей секунд. В испытаниях на жесткое реальное время, если хотя бы раз лимит времени превышен, то это брак.

В испытаниях на мягкое реальное время, иногда черный ящик может запаздывать, но является рабочим ящиком. Только после определенного заданного по ТЗ процента пропусков он становится браком.
Чушь. РТ есть гарантия выполнения (в т.ч математическая), а не тесты производитесльности.
Мягкого РТ нет - это лапшепедия. Которая, очевидно работает, судя по безграмотности.
...
Рейтинг: 0 / 0
О применимость языков
    #39039033
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглЧушь. РТ есть гарантия выполнения (в т.ч математическая), а не тесты производитесльности.
Мягкого РТ нет - это лапшепедия. Которая, очевидно работает, судя по безграмотности.
ПО не нуждается в тестировании и существует математически строгий способ проверки его (ПО) корректности?
Как отреагирует наш черный ящик-реального-времени на резкий перепад температур? Что там с процессором случится?
...
Рейтинг: 0 / 0
О применимость языков
    #39039039
Factorize
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Постепенно в споре моё утверждение расширилось: любой алгоритм можно описать и запрограммировать на С++, а Ява и C# ограничены виртуальной машиной.

Мои оппоненты утверждают: Ява ограничений не имеет в области формального описания алгоритмов.

С тех спор и спорим.

Ну, давайте, скажите свое определение алгоритма, для начала. Из этого будет ясно, ограничены ли C# с Java.
...
Рейтинг: 0 / 0
О применимость языков
    #39039056
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petravЗимарглЧушь. РТ есть гарантия выполнения (в т.ч математическая), а не тесты производитесльности.
Мягкого РТ нет - это лапшепедия. Которая, очевидно работает, судя по безграмотности.
ПО не нуждается в тестировании и существует математически строгий способ проверки его (ПО) корректности?
Как отреагирует наш черный ящик-реального-времени на резкий перепад температур? Что там с процессором случится?
Ты чего то не про то. РТ это только про время исполнения задачи, а не про корректность. В вики почитал бы.

Гарантировать фиксированное время исполнения в специализированной ОС достаточно просто - применять шаговые автоматы.
...
Рейтинг: 0 / 0
О применимость языков
    #39039106
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012petravИ, точно, лучше конкретно Вам уйти из ветки.
Ни кому из ветки уходить не надо ...
Но и саблей махать налево и направо и рубить "не нужное" как бы тоже лишнее ...

Все таки неужели "словесно блок схемный" стиль описания алгоритмов - лучшее из всех возможностей.
Неужели академический мир не создал каких то спецификаций ...

создал.

к примеру,
р-технологии Вельбицкого, окончательно похороненные лет 20 назад,

языки спецификаций vdm, rsl и z
...
Рейтинг: 0 / 0
О применимость языков
    #39039109
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravВладимир2012Все таки неужели "словесно блок схемный" стиль описания алгоритмов - лучшее из всех возможностей.
Неужели академический мир не создал каких то спецификаций ...
Создавал, что вы! Целый огромный язык создали — Unified Modeling Language .

ага, хрень такую.
из таких соображений, как вилами по воде, это был переход к древнеегипетским иероглифам,
которые отличались от текущей системы записи, что система записывания иероглифами
сложнее или равна сложности описываемой модели.
Текущая система записи буквами проще любой описываемой модели.
Поэтому и не набрал популярности в связи с возвратом в хрень знает какую тьму таракань.
Система записи алгоритма и/или спецификаций должна быть буквенная, а не картинками - иероглифами.
...
Рейтинг: 0 / 0
О применимость языков
    #39039261
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravКак вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум?
Ни какой ВМ при этом не придется создавать. Просто перед описанием алгоритма достаточно пояснить,
что java использовалась всего лишь как средство описания алгоритма функционирования диспетчера потоков ...
Реализация и описание - разные вещи.
Можно хоть на Foxpro то же самое сделать.
Самый главный вопрос в данном случае - будет ли описание логики алгоритма с использованием /например java/
выбранного языка "прозрачно". Т.е. смогут ли без труда понять его программисты не знающие java ...
...
Рейтинг: 0 / 0
О применимость языков
    #39039376
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012petravКак вы себе представляете описание алгоритма диспетчера потоков ОС Windows на Яве? Для этого вам внутри JVM придется реализовать некую другую ВМ - запрограммировать тот же ассемблер МК-52 и расширить возможности того процессора до обработки исключений и поддержки виртуальной памяти как минимум?
Ни какой ВМ при этом не придется создавать. Просто перед описанием алгоритма достаточно пояснить,
что java использовалась всего лишь как средство описания алгоритма функционирования диспетчера потоков ...
Реализация и описание - разные вещи.
Можно хоть на Foxpro то же самое сделать.
Самый главный вопрос в данном случае - будет ли описание логики алгоритма с использованием /например java/
выбранного языка "прозрачно". Т.е. смогут ли без труда понять его программисты не знающие java ...
Опять 25-ть. Я уже сто раз говорил: хоть на МК-52, хоть на Яве.

Но, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования.
...
Рейтинг: 0 / 0
О применимость языков
    #39039383
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНо, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования.
Семантика union это не алгоритм, а синтаксическая конструкция некоторого языка.
Что вы подразумеваете под описанием на java union?
...
Рейтинг: 0 / 0
О применимость языков
    #39039385
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНо, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования
это просто оптимизация, никакой семантики, источник багов

если так припёрло - ByteBuffer
...
Рейтинг: 0 / 0
О применимость языков
    #39039392
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012petravНо, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования.
Семантика union это не алгоритм, а синтаксическая конструкция некоторого языка.
Двунаправленный список — это тоже не алгоритм. Но он бессмысленный без алгоритмов создания и работы со списками.

union — не алгоритм, но за ним кроются алгоритмы размещения разнородных данных в одной области памяти.

Владимир2012Что вы подразумеваете под описанием на java union?
Описание на Яве как это работает.

Вот список понятий, которые я предлагаю описать на Яве, что бы это имело смысл:

- union.
- bit set.
- RAII.
- Memory pool.
...
Рейтинг: 0 / 0
О применимость языков
    #39039394
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилpetravНо, опишите на Java семантику union хотя бы. Обычный инструмент системного программирования
это просто оптимизация, никакой семантики, источник багов

если так припёрло - ByteBuffer
Есть семантика, есть.

По поводу ByteBuffer. Вот я и говорю, что бы на Яве описывать системные алгоритмы придется создавать на яве абстрактную машину.

Но опишите семантику union хотя бы с помощью ByteBuffer. Опасного приведения указателей в Яве то нет, как и самих указателей — насколько я знаю.
...
Рейтинг: 0 / 0
О применимость языков
    #39039396
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravсемантику union
c/c++ до фортрана -как до Луны раком (EQUIVALENCE)
...
Рейтинг: 0 / 0
О применимость языков
    #39039398
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravДвунаправленный список — это тоже не алгоритм. Но он бессмысленный без алгоритмов создания и работы со списками.
Алгоритмы не витают в пустынном космосе.
Если вы в алгоритме используете понятием "список" и это понятие скажем не общеупотрибетельно, то
безусловно перед описанием алгоритма вы должны словесно описать какие новые понятия /объекты/ вы
будете использовать и привести набор используемых операций с ними.

petrav- bit set.
Набор функций.

petrav- Memory pool.
Описание понятия /объекта/ "Memory pool" и операций для работы с ним ...

Ну а как иначе?
Все алгоритмы используются для некоторых предметных областей в которых используются некоторый набор
объектов и операций над ними ...
...
Рейтинг: 0 / 0
О применимость языков
    #39039400
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно пассажир решает какую-то задачу именно "таким способом" как ему хочется.
...
Рейтинг: 0 / 0
О применимость языков
    #39039401
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилpetravсемантику union
c/c++ до фортрана -как до Луны раком (EQUIVALENCE)
А до SQL вообще как до Марса. Напишем компиляторы/интерпритаторы для Фортрана и SQL на С/С++ и всё будет хорошо.

Кстати, поясните плиз что такое EQUIVALENCE в Фортране.
...
Рейтинг: 0 / 0
О применимость языков
    #39039405
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012petravДвунаправленный список — это тоже не алгоритм. Но он бессмысленный без алгоритмов создания и работы со списками.
Алгоритмы не витают в пустынном космосе.
Если вы в алгоритме используете понятием "список" и это понятие скажем не общеупотрибетельно, то
безусловно перед описанием алгоритма вы должны словесно описать какие новые понятия /объекты/ вы
будете использовать и привести набор используемых операций с ними.
Двунаправленный список — это общеупотребимый термин. Или я вас неправильно понял.

Владимир2012petrav- bit set.
Набор функций.
Опишите же, плиз. Но на Яве.

Владимир2012petrav- Memory pool.
Описание понятия /объекта/ "Memory pool" и операций для работы с ним ...
Boost.Pool если память не подводит.

Владимир2012Ну а как иначе?
Все алгоритмы используются для некоторых предметных областей в которых используются некоторый набор
объектов и операций над ними ...
Да, но некоторые языки ограничены.
...
Рейтинг: 0 / 0
О применимость языков
    #39039406
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОчевидно пассажир решает какую-то задачу именно "таким способом" как ему хочется.
Очевидно, что на Яве вы не сможете толково даже описать (не точно реализовать) целый сонм алгоритмов требующих прямой доступ к памяти или требующий высокопроизводительных вычислений. (Без реализации виртуальной машины на Яве).

Но продолжаете спорить!
...
Рейтинг: 0 / 0
О применимость языков
    #39039409
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravДвунаправленный список — это общеупотребимый термин. Или я вас неправильно понял
Привел вам пример как использовать в алгоритме не общеупотребительные объекты.

petravОпишите же, плиз. Но на Яве.
Перед алгоритмов достаточно описать набор, используемых в нем "bit set" функций

petravДа, но некоторые языки ограничены.
Вот скажем в алгоритме использую операцию сравнения двух вселенных.
Покажите мне язык в котором такая операция присутствует.

Еще раз.
Если недостает некоторой выразительности языковых конструкций в алгоритмическом языке,
то автор алгоритма может компенсировать это описанием включением перед алгоритмом
свойственных для алгоритма объектов и операций над ними ...
...
Рейтинг: 0 / 0
О применимость языков
    #39039411
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravmaytonОчевидно пассажир решает какую-то задачу именно "таким способом" как ему хочется.
Очевидно, что на Яве вы не сможете толково даже описать (не точно реализовать) целый сонм алгоритмов требующих прямой доступ к памяти или требующий высокопроизводительных вычислений. (Без реализации виртуальной машины на Яве).

Но продолжаете спорить!
Да меня это не парит, чувак. Я легко переключусь в JNI и реализую те API которых не хватает.
Но я не стану строить идеологии и доказывать ненаучными методами что для Java недоступны
описательные возможности некоторых алгоритмов и структур данных.

Я тебе привёл операционку написанную на Java но ты видимо не проникся, нечитал или непонял.
Печально как-то это всё.
...
Рейтинг: 0 / 0
О применимость языков
    #39039412
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНо продолжаете спорить!
Да вы правы.
Уже и так и этак пытался вас обратить внимание, что реализация алгоритма и описание алгоритма - разные
задачи ...
Но похоже мы друг друга не слышим ...
...
Рейтинг: 0 / 0
О применимость языков
    #39039414
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Вот скажем в алгоритме использую операцию сравнения двух вселенных.
Покажите мне язык в котором такая операция присутствует.

Еще раз.
Если недостает некоторой выразительности языковых конструкций в алгоритмическом языке,
то автор алгоритма может компенсировать это описанием включением перед алгоритмом
свойственных для алгоритма объектов и операций над ними ...
Ну так опишите на Яве функции для реализации RAII, например.

Пожалуйста! Не надо банальностями сыпать, опишите, запрограммируйте!

Кстати, про pool memory это я лишнего сказал — если не добавить возможность размещать разнородные объекты.
...
Рейтинг: 0 / 0
О применимость языков
    #39039416
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ тебе привёл операционку написанную на Java но ты видимо не проникся, нечитал или непонял.
Печально как-то это всё.
Печально что вы меня не читаете. Это мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM другую (внутри) ВМ. Я его первый предложил!

Вы пользуетесь моими же аргументами — тогда когда их уясняете с 10-го раза. Это печально.
...
Рейтинг: 0 / 0
О применимость языков
    #39039417
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНу так опишите на Яве функции для реализации RAII, например.
Ну ладно еще разок.
Пусть в java нет указателей ..., работы с битами ...
А в алгоритме эти операции должны присутствовать.
Как быть?
Достаточно перед описанием алгоритма привести набор функций который будет использоваться в алгоритме, а
на чем он был или будет реализован это уже "третий вопрос" ...
...
Рейтинг: 0 / 0
О применимость языков
    #39039418
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012petravНу так опишите на Яве функции для реализации RAII, например.
Ну ладно еще разок.
Пусть в java нет указателей ..., работы с битами ...
А в алгоритме эти операции должны присутствовать.
Как быть?
Достаточно перед описанием алгоритма привести набор функций который будет использоваться в алгоритме, а
на чем он был или будет реализован это уже "третий вопрос" ...
Что?! RAII — это не набор битов, это даже не прямой доступ к памяти.
...
Рейтинг: 0 / 0
О применимость языков
    #39039420
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravПожалуйста! Не надо банальностями сыпать, опишите, запрограммируйте!
О чем у нас речь.
Об описании алгоритмов или их реализации?
Если не ошибаюсь "стержневая" мысль topic об ограниченности языков как средства описания алгоритмов
/но не реализации/...
У вас все время идет упор на реализацию алгоритмов ...
Это как бы совсем другая плоскость обсуждения ...
...
Рейтинг: 0 / 0
О применимость языков
    #39039423
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav Что?! RAII — это не набор битов, это даже не прямой доступ к памяти.
М-да - "я пас".
...
Рейтинг: 0 / 0
О применимость языков
    #39039425
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012petravПожалуйста! Не надо банальностями сыпать, опишите, запрограммируйте!
О чем у нас речь.
Об описании алгоритмов или их реализации?
Если не ошибаюсь "стержневая" мысль topic об ограниченности языков как средства описания алгоритмов
/но не реализации/...
У вас все время идет упор на реализацию алгоритмов ...
Это как бы совсем другая плоскость обсуждения ...
Ну так опишите RAII в синтаксисе Явы. Хотя бы опишите. Можете написать прототипы функций и пример алгоритма в 5-6-ть строчек.
...
Рейтинг: 0 / 0
О применимость языков
    #39039430
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravКстати, поясните плиз что такое EQUIVALENCE в Фортране.
http://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn9b/index.html
...
Рейтинг: 0 / 0
О применимость языков
    #39039431
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
О применимость языков
    #39039432
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЭто мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM
для описания алгоритмов JVM не нужна.
Требуется описать распределение памяти?
byte[] memory= new byte[poolSize];
и вперёд - списки, битовые карты и т д
...
Рейтинг: 0 / 0
О применимость языков
    #39039433
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги. Кто из вас считает что т.н. Resource Acquisition Is Initialization (RAII) является
принципиально нереализуемой сущностью в НЕ-С/C++ языках.
...
Рейтинг: 0 / 0
О применимость языков
    #39039435
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилpetravЭто мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM
для описания алгоритмов JVM не нужна.
Требуется описать распределение памяти?
byte[] memory= new byte[poolSize];
и вперёд - списки, битовые карты и т д
Окей.

А теперь размести в этом массиве полноценный Ява-объект, так что бы в этом массиве расположение объекта начиналось с 10-го, например, байта. Уточнение: никаких предположений о типах полей данных этого объекта делать не надо. Управление объектом по указателю должно быть полноценным (обычный синтаксис, вызов конструктора и т.д.).

Так же для этого объекта нужно вызвать деструктор в тот момент когда нам будет нужно.
...
Рейтинг: 0 / 0
О применимость языков
    #39039436
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимарглpetrav,

РТФМ http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html
Это уже всё многократно обсуждалось. Это аналог using в C#. Полноценным RAII это не является ни там, ни там. Google it: "C# RAII", "Java RAII".
...
Рейтинг: 0 / 0
О применимость языков
    #39039438
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravА теперь размести в этом массиве полноценный Ява-объектэто не требуется - описываем алгоритмы распределения памяти.
и никакие Java объекты там размещать не требуется.

Неужели не доходит, что описание алгоритма не равно конкретной реализации?
...
Рейтинг: 0 / 0
О применимость языков
    #39039439
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКоллеги. Кто из вас считает что т.н. Resource Acquisition Is Initialization (RAII) является
принципиально нереализуемой сущностью в НЕ-С/C++ языках.
RAII даже в С не реализуется.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void foo()
{
    int *p = malloc(100);

    // ...

    if ( myFunc() )
    {
        return; // Opps, memory leak, no RAII.
    }

    // ...

    free(p);
}



Но могу быть другие языки с поддержкой RAII.
...
Рейтинг: 0 / 0
О применимость языков
    #39039440
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилpetravА теперь размести в этом массиве полноценный Ява-объектэто не требуется - описываем алгоритмы распределения памяти.
и никакие Java объекты там размещать не требуется.

Неужели не доходит, что описание алгоритма не равно конкретной реализации?
А если мне по алгоритму нужно там разместить объект? Например описываю логику pool memory с разнородными объектами? Ну так можно описывать алгоритмы вообще без ООП (даже без эмуляции как на С).

Я про то и говорю, что в ограниченных языках ты многое не то, что реализовать не сможешь, даже описать не сможешь по человечески. Ты уже от ООП отказываешься. Машина Тьюринга вообще универсальна. =)
...
Рейтинг: 0 / 0
О применимость языков
    #39039442
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТы уже от ООП отказываешься
есть масса мест , где ООП неуместно (ядро ОС в частности)

petravМашина Тьюринга вообще универсальна. =)
алгоритмы сортировки, поиска, распределения памяти, планирования процессов - вряд ли осмыслено в терминах машины Тьюринга
...
Рейтинг: 0 / 0
О применимость языков
    #39039443
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav, слушай дружище. Ну вот на сях написаны ядра операционок, DBMS, игры и некислая
туча прошивок для сетевого оборудования. Может этот т.н. RAII является "птичьим молоком"
и вобщем-то не нужен? Я вместо доказательства или опровержения нужности или необходимости
этой замечательной идеомы ссылаюсь на знакомую нам всем практику. Дэннис Ричи (царство
ему небесное) тоже видимо был обречён кодить свои Юниксы без RAII в рамках изестных
нам limitations.
...
Рейтинг: 0 / 0
О применимость языков
    #39039447
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилpetravТы уже от ООП отказываешься
есть масса мест , где ООП неуместно (ядро ОС в частности)
Ну ты и пойми, что описывать алгоритмы ядра ОС (даже просто описывать) на Яве еще более неуместно и никто этого не делает.

ИзопропилpetravМашина Тьюринга вообще универсальна. =)
алгоритмы сортировки, поиска, распределения памяти, планирования процессов - вряд ли осмыслено в терминах машины Тьюринга
Ну почему. Сколько там команд в машине Тьюринга? 5-6-10? Пишем макросы, постепенно доходим до ассемблера 0086 процессора, там уже С можно запустить, потом С++, потом реализация Явы. =) Попутно реализовываем на С/С++ все системные алгоритмы, оптимизирующие алгоритмы системные. А там уже и Винду можно запускать. =)
...
Рейтинг: 0 / 0
О применимость языков
    #39039448
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНу почему. Сколько там команд в машине Тьюринга? 5-6-10? Пишем макросы, постепенно доходим до ассемблера 0086 процессора, там уже С можно запустить, потом С++, потом реализация Явы. =) Попутно реализовываем на С/С++ все системные алгоритмы, оптимизирующие алгоритмы системные. А там уже и Винду можно запускать. =)
я как нибудь Pascal и Java обойдусь. для описания.

а на чём кодировать - вопрос отдельный
...
Рейтинг: 0 / 0
О применимость языков
    #39039449
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНу почему. Сколько там команд в машине Тьюринга? 5-6-10? Пишем макросы, постепенно доходим до ассемблера 0086 процессора, там уже С можно запустить, потом С++, потом реализация Явы. =) Попутно реализовываем на С/С++ все системные алгоритмы, оптимизирующие алгоритмы системные. А там уже и Винду можно запускать. =)
google.ru => ограниченности языков как средства описания алгоритмов

Вот например интересная статья
РАЗРАБОТКА ГРАФИЧЕСКОГО ФОРМАЛИЗМА ДЛЯ ОПИСАНИЯ АЛГОРИТМОВ В ПРОЦЕСС-ОРИЕНТИРОВАННОМ СТИЛЕ http://www.nsu.ru/xmlui/bitstream/handle/nsu/553/04.pdf
...
Рейтинг: 0 / 0
О применимость языков
    #39039450
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav Сколько там команд в машине Тьюринга? 5-6-10? Ты даже этого не знаешь?
Эх ты, тролль недоучка...
...
Рейтинг: 0 / 0
О применимость языков
    #39039453
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetrav, слушай дружище. Ну вот на сях написаны ядра операционок, DBMS, игры и некислая
туча прошивок для сетевого оборудования. Может этот т.н. RAII является "птичьим молоком"
и вобщем-то не нужен? Я вместо доказательства или опровержения нужности или необходимости
этой замечательной идеомы ссылаюсь на знакомую нам всем практику. Дэннис Ричи (царство
ему небесное) тоже видимо был обречён кодить свои Юниксы без RAII в рамках изестных
нам limitations.
Жить можно и без RAII, но он кардинально повышает качество кода на С++. Ричи писал на С без RAII, да.

Если отказываться, тогда придется в С++ отказаться от исключений. Либо не отказываться, но тогда код на С++ станет оооочень сложно писать — почти невозможно. Каждый вызов функции придется обрамлять try/catch, вручную следить за инициализированными локальными переменными (с захватом ресурсов). И много другое.

Можно и от деструкторов отказаться. Ведь RAII — это прямое следствие детерминированного вызова деструкторов.

Можно поступить как в Яве: отказаться от полноценного RAII и добавить сборщик мусора. Но тогда придется отказаться от производительности С++.
...
Рейтинг: 0 / 0
О применимость языков
    #39039455
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyClass *p = new MyClass();

какой такой RAII ?
...
Рейтинг: 0 / 0
О применимость языков
    #39039456
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlpetrav Сколько там команд в машине Тьюринга? 5-6-10? Ты даже этого не знаешь?
Эх ты, тролль недоучка...
А ты всё еще хамишь?

Я эту машину изучал в школе. Лет 20-ть назад. Помню, что бесконечная лента с ячейками чисел, тележка двигается вправо и влево, считывает, записывает, обменивает данные. Как реализовываются условные действия - не помню.

Так что извини.
...
Рейтинг: 0 / 0
О применимость языков
    #39039458
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилMyClass *p = new MyClass();

какой такой RAII ?
Такой:

Код: plaintext
1.
2.
std::unique_ptr<MyClass> p( new MyClass() );
p->myMethod();
...
Рейтинг: 0 / 0
О применимость языков
    #39039459
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravА теперь размести в этом массиве полноценный Ява-объект, так что бы в этом массиве расположение объекта начиналось с 10-го, например, байта. Уточнение: никаких предположений о типах полей данных этого объекта делать не надо. Управление объектом по указателю должно быть полноценным (обычный синтаксис, вызов конструктора и т.д.).

Так же для этого объекта нужно вызвать деструктор в тот момент когда нам будет нужно.
Чел я в ответ на твои посты раз 5 берусь что-то писать. Потом откладываю. Потом снова начинаю писать.
Вобщем мы как-то слишком ходим по кругу. Давай для начала еще немного прояснений.
Прояснение первое. В Java объекты аллоцируются по адресам кратным некому числу. Это
зависит от модели памяти. Обычно чем крупнее Xmx тем больше гранула.
Поэтому располагать объект с "10-го" байта нет возможности. Нет возможности фиксировать
АДРЕСА в принципе. JMM предполагает некую ротацию объектов. Это разумная плата за
плюшки от JMM. И к этому пришли путём эволюции. Тоесть путём переосмысления
всего исторического наследия информационной эпохи начиная от LISP-моделей.
Модель памяти которая использует GC будет использоваться всё больше и
больше. Это вопрос времени. Новое время диктует нам свои условия.
Больше КПД разработки. Больше управляемости.

Второе проясннение . Идя тебе навстречу. И решая некоторые задачи
алгоритмизации я могу выделить отдельную область памяти как вектор байт
(new byte[...]) и рассматривать ее как область для сериализации объектов.
Строя подобные "слои" персистентности я получаю в некую ПСЕВДО-адресную
арифметику. Разумеется мне придётся реализовывать некий менеджмент
по учоту свободной памяти. Но в ПРИНЦИПЕ это решаемо. Я уж не знаю
для каких тебе задач это нужно но это в Java РЕШАЕМО.

Фраза "никаких предположений о типах полей данных этого объекта делать не надо" - требует
пояснений или уточнений. Лучше в качестве примера.
...
Рейтинг: 0 / 0
О применимость языков
    #39039463
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravИзопропилMyClass *p = new MyClass();

какой такой RAII ?
Такой:

Код: plaintext
1.
2.
std::unique_ptr<MyClass> p( new MyClass() );
p->myMethod();



а кто будет следить за объектами, с временем жизни несколько дольше, чем вызов функции, создавшей объект?
...
Рейтинг: 0 / 0
О применимость языков
    #39039466
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЯ эту машину изучал в школе. Лет 20-ть назад. Помню, что бесконечная лента с ячейками чисел, тележка двигается вправо и влево, считывает, записывает, обменивает данные. Как реализовываются условные действия - не помню.

Так что извини.Не извиню. Если ты не знаешь базы, то не можешь рассуждать о более продвинутых вещах. Не, можешь кончено, но у тебя всегда будет получаться бред типа того что ты пишешь в этом топике.
Ты конечно мастерски держишь флейм, подменяешь понятия, делаешь обобщения на пустом месте, требуешь от оппонентов чего-то мифического и никому не нужного. В этом ты молодец. Тут я снимаю шляпу. Молодец. Давно я не видел такого талантливого тролля.
Вот только базу стоит подучить. Более качественный флейм сможешь вести, тебя сложнее будет поймать. А то сейчас ты слишком уж часто делаешь бредовые заявления. Уворачиваешься от ответа ты конечно хорошо, но более высоким классом было бы не давать повода оппонентам на тыканье пальцем: "тут ты не прав". Было бы у тебя образование, сумел бы замаскировать софизмы под наукоемкие фразы, а так.... Тебя слишком легко поймать.
В общем, талант у тебя есть. Лет через пять может и пробьешься в большие люди. Дерзай.
...
Рейтинг: 0 / 0
О применимость языков
    #39039468
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
Не сортируйте массивы! Это пустая трата мегафлопов! Это тупая олимпиадная задачка которую придумали
чортовы теоретеки. Она в реальности не имеет прототипа.
...
Рейтинг: 0 / 0
О применимость языков
    #39039469
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonФраза "никаких предположений о типах полей данных этого объекта делать не надо" - требует
пояснений или уточнений. Лучше в качестве примера.
Предположим нам нужно очень часто создавать и уничтожать объекты типов Т1, Т2 и Т3. Как можно производительнее и с памятью у нас чем — больше тем лучше, сожрем и 16Гб оперативки.

Универсальная реализация динамической памяти хороша тем, что может размещать в памяти объекты разных размеров. Но в том то и слабость в производительности. Если писать менеджер динамической памяти, который будет знать, что все объекты имеют одинаковый размер, то он будет работать гораздо быстрее.

И так получилось, что все Т1, Т2 и Т3 имеют примерно одинаковый размер. Не больше 512 байт. Необходимо реализовать свой менеджер памяти. Безопасный в работе с типами. С вызовом конструкторов, деструкторов и с полноценным синтаксисом.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Pool<T1, T2, T3> p(512, 500); // 512 размер, 500 количество памяти под зарезервированные объекты. Без вызова конструкторов.

T1 *t1 = p.alloc<T1>(); // Вызывается конструктор T1::T1();
t1->foo();
double d = t1->d(); // Вызывается деструктор.
int i = t1->i();
p.free(t1);

T2 *t2 = p.alloc<T2>();
T3 *t3 = p.alloc<T3>();

p.clear(); // Вызываются деструкторы всех размещенных, но явно не освобожденных объектов.



Класс Pool у нас универсальный и ничего не должен знать о типах Т1... В следующем проекте будет Т10 например. Так же желательно класс Pool параметризовать алгоритмом поиска свободной памяти и освобождения памяти.
...
Рейтинг: 0 / 0
О применимость языков
    #39039471
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetravМожно поступить как в Яве: отказаться от полноценного RAII и добавить сборщик мусора. Но тогда придется отказаться от производительности С++.
Ты знаешь. Я устал. Я устал доказывать что производительность зачастую лежит не там
и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза
лежали в
1) I/O
2) Network/Http/Rest/Soap
3) Доступ к БД/Оптимизатор запросов
4) Блокировки разделяемых ресурсов среды.
5) Неверный алгоритм или последовательность шагов. Ошибки project-owner или аналитика при описании задачи.
Производительность собственно бинарного кода очень редко оказывает сильное влияние.
Ну или у меня подобных задач было мало. А когда проблема действительно находилась
и после анализа профайлером удалялась - на верх снова поднимались проблемы (1),(2),...e.t.c.
Елки палки!!!

Так мы и НЕ ГОВОРИМ про энтерпайз! У нас ДРУГАЯ тема разговоров! А так с твоими словами согласен.
...
Рейтинг: 0 / 0
О применимость языков
    #39039474
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения не "500 количество памяти под зарезервированные объекты", 500 - количество объектов для которых нужно память резервировать.
...
Рейтинг: 0 / 0
О применимость языков
    #39039475
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlТебя слишком легко поймать.
Ну у тебя, кроме «ты дурак», пока ничего не получилось в плане «поймать». :) Свои посты-то перечитай...

Кроме того, я и бегать ни от кого не хочу. Это твои желания ловить кого-то.
...
Рейтинг: 0 / 0
О применимость языков
    #39039476
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Код: plaintext
1.
Pool<T1, T2, T3> p(512, 500);



(покачиваясь на стуле)

Не знаю.... Не нравится мне эта постановка. Я-бы со старта выделил 3 пустых коллекции для T1, T2, T3
и использовал их по мере роста.
...
Рейтинг: 0 / 0
О применимость языков
    #39039477
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилpetravпропущено...

Такой:

Код: plaintext
1.
2.
std::unique_ptr<MyClass> p( new MyClass() );
p->myMethod();



а кто будет следить за объектами, с временем жизни несколько дольше, чем вызов функции, создавшей объект?
Обычно всё начинается с 1-10 объектов созданных в main() (или глобальные, что хуже), а уж они через указатели (shared_ptr) и контролируют по цепочке всё остальное. Точнее не по цепочке, а в виде дерева размещенных в ОЗУ объектов. Если сеть, то weak_ptr.
...
Рейтинг: 0 / 0
О применимость языков
    #39039479
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetrav,

Код: plaintext
1.
Pool<T1, T2, T3> p(512, 500);



(покачиваясь на стуле)

Не знаю.... Не нравится мне эта постановка. Я-бы со старта выделил 3 пустых коллекции для T1, T2, T3
и использовал их по мере роста.
Коллекция? std::set? Ну тут совсем не подходит. В коллекцию мы кладем значения, проверяем что они там есть, удаляем. Ну... не знаю как объяснить. Ведь у коллекции и динамического вектора ведь разное назначение? Я уж не говорю про какое-нибудь бинарное дерево поиска.

Ну вот нам нужно выделять и освобождать объекты. Нам нужна логика динамической памяти оптимизированной под размещение объектов не больше заданной длинны.
...
Рейтинг: 0 / 0
О применимость языков
    #39039521
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravТак мы и НЕ ГОВОРИМ про энтерпайз! У нас ДРУГАЯ тема разговоров!
ну так уточните тему
...
Рейтинг: 0 / 0
О применимость языков
    #39039530
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravКоллекция? std::set? Ну тут совсем не подходит. В коллекцию мы кладем значения, проверяем что они там есть, удаляем. Ну... не знаю как объяснить. Ведь у коллекции и динамического вектора ведь разное назначение? Я уж не говорю про какое-нибудь бинарное дерево поиска.

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

Я говорю - не нужна. Твоя задача решается в лоб.
...
Рейтинг: 0 / 0
О применимость языков
    #39039619
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonТы знаешь. Я устал. Я устал доказывать что производительность зачастую лежит не там
и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза
лежали в
1) I/O
...
Производительность собственно бинарного кода очень редко оказывает сильное влияние.
Ну или у меня подобных задач было мало. А когда проблема действительно находилась
и после анализа профайлером удалялась - на верх снова поднимались проблемы (1),(2),...e.t.c.

Есть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее.

Присединяюсь к ВайтОвлу, Петрав игнорировать - ни квалификации, ни последовательности в выводах.
...
Рейтинг: 0 / 0
О применимость языков
    #39039628
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее.

Как-то сумбурно всё. При чём здесь свопинг непонятно. Кто настраивал конфигурацию? Кто выставлял настройки heap?
При чём здесь Питон?
Петрав игнорировать - ни квалификации, ни последовательности в выводах.
Не согласен. Петрав несёт свой тезис. Просто он его никак не может озвучить.
С ним всё время мы сворачиваем на какую-то узкую самолётную предметную область где нужно
считать наносекунды на malloc и кодить алгоритмы только на определённых языках.
Я с этим не согласен. И жду конкретики.
...
Рейтинг: 0 / 0
О применимость языков
    #39039635
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
ЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее.

Присединяюсь к ВайтОвлу, Петрав игнорировать - ни квалификации, ни последовательности в выводах.

Есть золотое правило - 90% производительности занимает 10% кода.
Сэкономив время на разработке и отладке (Java и C#), можно более серьезно заняться оптимизацией этих 10% - от переработки алгоритма до написании (если уж очень критично) конкретной процедуры на asm. Впрочем последнее редко бывает нужным - разработчики C# и Java серьезно поработали над производительностью стандартных библиотек.

Что до жирных фреймворков, то это тоже не совсем так. Неумерное потребление ресурсов вызвано обычно соответствующим отношением программистов к ним. А некоторые даже не догадываются, что некоторые объекты (использующие внешние ресурсы) нужно освобождать принудительно. Причем проблема неумеренного потребления ресурсов браузером сайтами на порядок актуальнее, но никто не парится на эту тему. Увы.

По драйверам. Встречался с драйвером, написанным на Delphi. Работал как часы. Никаких проблем, даже на самых медленных машинах. Понятно, что формочек и компонентиков там не было. Не вижу, почему бы там была проблема с C# и Java, хотя с com-портами на этих языках не работал. Понятно, что драйвер видеокарты надо писать на asm и C (и то, там куча формочек с настройками - пиши на чем хочешь), но такого софта 0,001% от всего ПО.
...
Рейтинг: 0 / 0
О применимость языков
    #39040009
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее.

Как-то сумбурно всё. При чём здесь свопинг непонятно. Кто настраивал конфигурацию? Кто выставлял настройки heap?
При чём здесь Питон?

Эмм. Да, ща проясню. Речь про производительность.

По прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 раза, не больше, но:

а) Простейшая задач на Яве или дНете сколько мегабайт памяти жрет при старте? Соответственно старт долгий.
б) дНет полностью в память не грузится при старте - в программе при обращении к какой то функциональности идет подгрузка (за Яву тут не скажу, от ОС-платформы может зависеть).
В принципе мониторингом это видно. А еще лучше видно лаги при открытии нового окошка в какой-нибуть приблуде, типа той же виз.студии >= 2010.

в) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет.
...
Рейтинг: 0 / 0
О применимость языков
    #39040033
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПетрав несёт свой тезис. Просто он его никак не может озвучить.
С ним всё время мы сворачиваем на какую-то узкую самолётную предметную область где нужно
считать наносекунды на malloc и кодить алгоритмы только на определённых языках.
Я с этим не согласен. И жду конкретики.
Проблема нашего взаимопонимания кроется в том, что ты рассуждаешь исключительно как разработчик энтерпрайз решений. Ты мыслишь в терминах оптимизатора запросов, нормализации БД, денормализации БД, пулов коннкекшинов и потоков, создания API к своим веб-приложениям, вопросов кластеризации и прочего маштабирования. Т.е. ты думаешь исключительно как high level enterprise разработчик.

В доказательство твоя цитата: «Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в». Ну так и я устал.

Причем ты не разработчик базовых решений — не разработчик СУБД (SQL, MongoDB, например), не разрабатываешь ОС или Web-сервера (IIS, Apache). Ты даже отрицаешь алгоритмы сортировки — конечно, обычно это для тебя делает сервер БД — достаточно грамотно спроектировать структуру БД. А ведь подавляющее число этих технологий (ОС, СУБД, Веб-серверы, компиляторы, веб-браузеры и т.д.) написаны на С/С++ и их разработчики сталкиваются с проблемами, которые ты считаешь не нужными (тебе => и всем остальным).

Всё остальное ты отрицаешь как не нужное (или очень узкое). А именно:

- Высокопроизводительные расчеты (наука и техника — моделирование).
- Реальное время (авиация, автомобилестроение, станкостроение, космос).
- Ограниченные вычислительные ресурсы (встраиваемые системы, приборостроение).
- ОС, драйвера, СУБД, веб-сервера, веб-браузеры.

Какую конкретику ты хочешь? Вот я тебе ставлю задачу описать и разработать наш класс Pool<>, но с максимальной производительностью. Ответ: производительность не нужна, напишу на встроенных в Яву коллекциях. Я тебе предлагаю напиши на Яве union. Ты мне: мне API не хватает. Ну так хотя бы опиши на Яве парадигму RAII. Ответ: Денису Ричи было не нужно и мне не нужно.

Ну скачай исходники MySQL, посмотри алгоритмы обслуживания индексов — там 100% прямое манипулирование памятью. Опиши на Яве, Реализуй на Яве, сравни производительность. Реализуй на Яве разряженные матрицы и операции с ними. Сравни с производительностью Boost.uBLAST. И ты поймешь, что не то что реализовывать на Яве было не нужно, а даже и описывать. :)

PS: Сказать подробно чем я занимаюсь на работе — я не могу. В России есть заводы где даже сотовые телефоны на проходной сдают.
...
Рейтинг: 0 / 0
О применимость языков
    #39040049
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav- Высокопроизводительные расчеты (наука и техника — моделирование).
- Реальное время (авиация, автомобилестроение, станкостроение, космос).
- Ограниченные вычислительные ресурсы (встраиваемые системы, приборостроение).
- ОС, драйвера, СУБД, веб-сервера, веб-браузеры.

и на койхер здесь везде ++ ?

petravСказать подробно чем я занимаюсь на работе — я не могу
был бы на улице 1979 год - поверил бы
...
Рейтинг: 0 / 0
О применимость языков
    #39040053
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилpetravСказать подробно чем я занимаюсь на работе — я не могу
был бы на улице 1979 год - поверил бы
А почему 79-й, а не 37-й? Я ж не про шарашки рассказывал.

Или ты родился в 79-м и веришь только про этот год?
...
Рейтинг: 0 / 0
О применимость языков
    #39040056
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravА почему 79-й, а не 37-й? Я ж не про шарашки рассказывал.
тогда откуда столько секретности?
...
Рейтинг: 0 / 0
О применимость языков
    #39040058
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилpetravА почему 79-й, а не 37-й? Я ж не про шарашки рассказывал.
тогда откуда столько секретности?
В нашей стране куча режимных предприятий. Просто сам факт работы на нём скрывать глупо — все ж через проходную входят и выходят каждый день. От меня требуют конкретики, ну не могу я что-то абстрактное про ракетостроение рассказать, например. Потому что не знаю. И не имею к нему отношение.
...
Рейтинг: 0 / 0
О применимость языков
    #39040061
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravСказать подробно чем я занимаюсь на работе — я не могу.
а подробно не надо

веб-серверы пишешь?
...
Рейтинг: 0 / 0
О применимость языков
    #39040065
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилpetravСказать подробно чем я занимаюсь на работе — я не могу.
а подробно не надо

веб-серверы пишешь?
Нет. Авиационная промышленность. Ничего исключительного или даже особо секретного.
...
Рейтинг: 0 / 0
О применимость языков
    #39040070
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого тут букв. Ну ладно. Буду думать.
...
Рейтинг: 0 / 0
О применимость языков
    #39040113
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravПечально что вы меня не читаете. Это мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM другую (внутри)Вы бы, мопвашуять, с вопрос ознакомились, что ли ...
Технически JVM это совершенно обычная динамически компонуемая библиотека, экспортирующая набор точек входа. Соглашения по вызову - JNI.
Если имеющихся экспортов недостаточно для реализации какой-то особо забубённой задачи - пишется ещё одна динамически компонуемая библиотека, которая грузится и используется.
Никакой "виртуальной машины внутри виртуальной машины" не делается - решается "чиста канкретная задача".
С абстрагированием ситуация несколько иная. Абстрагирование - необходимо, т.к. иначе идёт лесом переносимость с платформы на платформу.
Соответственно, когда появится класс задач, где "кровь из носу" требуется без дополнительных прослоек - кто-то сядет, придумает и API и реализацию. Не исключено, что и то и другое будет удачным, а класс задач - очень востребованным.
...
Рейтинг: 0 / 0
О применимость языков
    #39040114
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглПо прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 разаИз пальца высосали?а) Простейшая задач на Яве или дНете сколько мегабайт памяти жрет при старте? Соответственно старт долгий.Пипец ...
Есть реальная система, которая обслуживает от двухсот до четырёхсот пользователей в течении рабочего дня.
Какая половая разница, сколько "жрёт" эта система на старте, если выполняя полезную работу она занимает столько места, сколько требуют обрабатываемые данные?
Какая половая разница, сколько секунд она стартует, если при нормальной работе она вообще не должна перезапускаться?в) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет.Когда мне потребуется парой гигабайт орудовать - питон останется таким же лёгким и быстрым?
...
Рейтинг: 0 / 0
О применимость языков
    #39040146
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее.

Мне знакома подобная риторика. Обычно так пишут люди которые плохо знают Java. Безусловно memory footprint
существует. Более того он существуюет в любой runtime или платформе которая не является stand-alone приложением
собранном на асме.

По поводу интерпретаций и питонов. Я предлагаю тебе подумать над термином HotSpot. Почитать что такое вообще "hot spots"
(горячие места) и каким образом Java-среда поступает c фрагментами кода которые исполняет первый раз.

P.S. Мне сложно общасться с Анонимосами. Вас много Зимарглов а я один. Прошу тебя залогонься.
...
Рейтинг: 0 / 0
О применимость языков
    #39040151
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимарглв) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет.
Подобный сравнительный тест с тремя мегабайтами - полная профанация. Надеюсь вы понимаете
что нельзя сравнивать килограммы с метрами. "3Мб памяти и Потому нет лагов"... это не суждения
инженера.

Я тоже люблю устраивать сравнения и бенчмарки. Но к ним нужно готовиться! Нужно собрать
всеобъемлющие факты.

Нельзя просто выпятить несколько фактов и поставить их во главу угла. Я к сожалению не знаком
с ЯП Python и платформой. И я не готов комментировать 3 мегабайта. Но я-бы подошёл более шИроко.

Не так упрощённо как вы.
...
Рейтинг: 0 / 0
О применимость языков
    #39040152
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЗимарглПо прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 разаИз пальца высосали?

Последний тезис интересен. К слову на сегодняшний день и у меня совершенно нет подобного
индекса производительности. С вашего позволения коллеги я до Тяпничного топика подумаю
над семейством сравнительных тестов для

C++ (gcc/visual c)

Java

.Net

В категориях CPU(computing), Memory Diving, I/O (диск, сетевые сокеты).

Всего должно быть 9 штук оносительных индексов производительности. Почему относительных?
Ну возможно потому что за единицу мы будем просто брать лучший.
...
Рейтинг: 0 / 0
О применимость языков
    #39040159
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdxЧто до жирных фреймворков, то это тоже не совсем так. Неумерное потребление ресурсов вызвано обычно соответствующим отношением программистов к ним. А некоторые даже не догадываются, что некоторые объекты (использующие внешние ресурсы) нужно освобождать принудительно.
+1
Пример из прошлого опыта: работал в одной конторке где в 1с7.7 постоянно трудилось около полусотни юзверей. Конфигурация самописная. Сидели все в терминале. Юзвери плевались на тормоза. Админ постоянно просил 50-100 килобаксов на очередной мегасервер. А программерам было лень оптимизациями заниматься. Например банально лень упихать отчет чтобы был шириной с лист бумаги. Зачем этот гимор с вымерянием колонок если есть галка "Подогнать под ширину листа", а то что эта подгонка неплохо нагружала проц при каждом формировании отчета им было фиолетово.
...
Рейтинг: 0 / 0
О применимость языков
    #39040165
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravПричем ты не разработчик базовых решений — не разработчик СУБД (SQL, MongoDB, например), не разрабатываешь ОС или Web-сервера (IIS, Apache). Ты даже отрицаешь алгоритмы сортировки — конечно, обычно это для тебя делает сервер БД — достаточно грамотно спроектировать структуру БД. А ведь подавляющее число этих технологий (ОС, СУБД, Веб-серверы, компиляторы, веб-браузеры и т.д.) написаны на С/С++ и их разработчики сталкиваются с проблемами, которые ты считаешь не нужными (тебе => и всем остальным).

Всё остальное ты отрицаешь как не нужное (или очень узкое). А именно:

- Высокопроизводительные расчеты (наука и техника — моделирование).
- Реальное время (авиация, автомобилестроение, станкостроение, космос).
- Ограниченные вычислительные ресурсы (встраиваемые системы, приборостроение).
- ОС, драйвера, СУБД, веб-сервера, веб-браузеры.

Дружище. Я не знаю с какими задачами ты сталкиваешся. Может ваш авиа-пром клепает свои DBMS и операционки.
Поэтому мне (и как я понял другим читателям топика) трудно влезть тебе в мозг и понять что у тебя за трудности
и проблемы по работе.

Не спеши делать обо мне преждевременные суждения. Почитай мои посты ранее и ты поймёшь что ты не прав
добавляя мне слова и тезисы которые я никогда не говорил. Я всегда был человеком науки. У меня два высших.
По первому я - связист. Спец (к сожалению) по координатным АТС и Квази-электоронным станциям которых к сожалению уже нет.
По второму я - чистый software инженер. Донецкий национальный институт.

Реал-тайм для меня остался в прошлом когда я в 16 лет написал на Assembler для ZX-Spectrum утилиту которая записывает
и воспроизводит голос. Мне приш лось учитывать длину мнемокники в тактах чтобы добиться стабилизации
ИКМ звука. Мне приходилось держать в руке паяльник и я тебя уверяю что нет в электрике такого места
куда-бы я уже не влезал для того чтобы фиксить свои собственные хотелки. В универе я плотно интересовался
цифровой обработкой сигналов. Мой дипломный был кажется на тему фильтров Чебышевы и Баттерворта.
Я техно фан и техно-фрик. Мой отец - бывший радио-любитель КВ-шник и влил мне в мозг достаточно большую
БД знаний из области радио-волн. Схему детекторного радио-приёмника я хоть щас тебе нарисую с закрытими
глазами и расскажу как она работает. У меня по работе достаточно хорошо поставленный технический слог.
Я иногда выполняю функции аналитика и пишу ТЗ. (Не так как в этом форуме. Здесь я вечно спешу и делаю ляпы).
Веду базы знаний и организовываю внутренние курсы обучения для корпорации.

Поэтому не спеши дружище. Не спеши. У нас с тобой еще целая вселенная и миллиард лет пока светит солнце.
...
Рейтинг: 0 / 0
О применимость языков
    #39040199
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос ко всем.
Как вы /"Вы" с большой буквы для тщеславных. Как по мне достаточно "вы" /
относитесь к технологиям создания программ с помощью с помощью графических блок-схем ...
Как по мне очень привлекательно.
То что uml широко не прижился /на мой взгляд/ отражает тот факт, что разработчики похоже не уловили
"изюминку" этой технологи.

PS: Sorry.
Реально с uml не работал /но ведь он не "прижился" .../.
Хотелось разработать с uml небольшой проект.
Какой soft посоветуете?

Прошелся по сайтам с тематикой uml, а там бизнес блок-схемы и много трепа "высокого полета".
Печаль ...
...
Рейтинг: 0 / 0
О применимость языков
    #39040245
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.много обрабатываемых данных) по мере занятости памяти системы
...
Рейтинг: 0 / 0
О применимость языков
    #39040263
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл-оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче.
с документацией лучше сначала ознакомиться нужно - того гляди - до тестирования дело не дойдёт
...
Рейтинг: 0 / 0
О применимость языков
    #39040271
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИзопропилЗимаргл-оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче.
с документацией лучше сначала ознакомиться нужно - того гляди - до тестирования дело не дойдёт
Кидай ссылки, а лучше на статьи практиков их подтверждающие. Вендоры часто умалчивают ненужные им детали.

Желательно на не очень старые версии и на разных платформах.
...
Рейтинг: 0 / 0
О применимость языков
    #39040281
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглНу насколько я помню, ты ни разу так ничего такого и не сделал. Стоит уйти с форума лет на 5, уже и пароль требуют =)

Регайся лентяй.

А насчёт того что я где-то дескыть не сделал - всего не могу помнить. Да и нет у меня обязательств кроме редкого
модерства. Just for fun здесь нахожусь как и все прочие.
...
Рейтинг: 0 / 0
О применимость языков
    #39040315
Фотография 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. Он практически не использует память. Но зато плотен в вещественных
вычислениях. Ближе к пятнице я оформлю его как ТЗ в своём тяпничном сообщении.

На объективность в плане ВЫБОРА алгоритма я не претендую. Рад буду услышать предложения и дополнения.
...
Рейтинг: 0 / 0
О применимость языков
    #39040342
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл,

ну поехали, обсудим http://www.ibm.com/developerworks/library/j-multitenant-java/
...
Рейтинг: 0 / 0
О применимость языков
    #39040344
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
ЗимарглЭмм. Да, ща проясню. Речь про производительность.

По прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 раза, не больше, но:

а) Простейшая задач на Яве или дНете сколько мегабайт памяти жрет при старте? Соответственно старт долгий.
б) дНет полностью в память не грузится при старте - в программе при обращении к какой то функциональности идет подгрузка (за Яву тут не скажу, от ОС-платформы может зависеть).
В принципе мониторингом это видно. А еще лучше видно лаги при открытии нового окошка в какой-нибуть приблуде, типа той же виз.студии >= 2010.

в) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет.

.Net (например) не проигрывает С++
На 99.9 % реальных задач. Серьезные задачи - это обработка данных и сложные вычисления. Для этого есть стандартные библиотеки, никто массивы вручную не сортирует. Память под данные выделяются строго в соответствии с необходимостью. Ничего лишнего. Если у кого-то кривой код, при котором постоянно создаются миллионы объектов и висят в памяти, пока их не уберет сборщик - это не вина .NET. Для Java - аналогично, все "детские болезни" давно вылечены.
a) Простейшая задача на .Net занимает очень мало места и стартует очень быстро. Просто уберите все лишнее.
б) дНет действует абсолютно логично. Зачем грузить то, что не нужно? Хотите подгрузить сразу? Никаких проблем. Проблемы идут от
незнания принципов работы со сборками и не понимания необходимых требований.
в) никакой связи между занимаемой памятью и лагами в интерфейсе нет. Конечно, если у Вас свободной памяти всего 5 мегабайт - тогда да. Но никто же не предлагает ставить .Net на микроконтроллерах.

Ничего против Си и Си++ не имею. Пользовался. Хорошие языки. )
Но в 90% случаев предпочел бы Java и .Net
...
Рейтинг: 0 / 0
О применимость языков
    #39040379
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
maytonКстати по пункту 1 (CPU) я уже нашёл подходящий тест. Это алгоритм рендеринга 3D-графики на С++ . Достаточно
не сложный чтобы портировать его на шарпы и Java. Он практически не использует память. Но зато плотен в вещественных
вычислениях. Ближе к пятнице я оформлю его как ТЗ в своём тяпничном сообщении.


Честно говоря, думаю что тест CPU - лишний. Но глянуть на алгоритм можно бы было. Можно и процедурку наваять, в принципе.
Just for fun )
...
Рейтинг: 0 / 0
О применимость языков
    #39040384
Cpt. Gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще не стоит забывать, что в С++ "прострелить себе ногу" куда проще чем в Джаве и ДотНете
Всякие утечки памяти, небезопасный код и тд и тп...
...
Рейтинг: 0 / 0
О применимость языков
    #39040389
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглДля тех кто умеет и хочет потестировать нужно для дНета и Явы:
-на разных задачах сравнить футпринт размещения на диске и в оперативной памяти всего фреймворка.

Исходя из личного опыта подобных измерений убеждён что очень часто специалисты не сходятся
на методологии замера выдавая одни цифры за другие и подменяя понятия. Элементарно, счётчики
JVisualVM/Jmap не совпадут с данными в taskmanager. .Net также будет предоставлять целый мешок
характеристик и нам будет не так просто акцентироваться на самом главном.
Поэтому во избежаниекривотолков:

- Прошу вас написать краткую инструкцию по замеру футпринта.
- Желательно подкрепить скриптами на Windows-shell (Windows), Bash/Sh (*Nix).

-оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче.

Я не знаю каким образом это можно оценить. Ожидаю от вас предложения.

-засечь page faults при различных задачах (разнообразное использование фреймворка.vs.много обрабатываемых данных) по мере занятости памяти системы
Здесь нужна некоторая вводная. По поводу Page Faults. И нужно также подкрепить некоторой инструкцией.
Хотя-бы для Win/Linux.
...
Рейтинг: 0 / 0
О применимость языков
    #39040391
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cpt. GrayЕще не стоит забывать, что в С++ "прострелить себе ногу" куда проще чем в Джаве и ДотНете
Всякие утечки памяти, небезопасный код и тд и тп...
Тезис интересный. Но я думаю что лучше мы его поскипаем. Мы будем считать что наше ПО С++ не содержит
memory laks. Тоесть оно КОРРЕКТНО.
...
Рейтинг: 0 / 0
О применимость языков
    #39040397
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdxНо в 90% случаев предпочел бы Java и .Net
Вточку. Топик называется О применимости языков. Я думаю что если он когда-либо закончится
мы будем иметь своё мнение о применимости и о % распределении.
...
Рейтинг: 0 / 0
О применимость языков
    #39040461
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 Это совпадает с показателем "Память - Рабочий набор".
Объем же фреймворка, подлинкованного но не загруженного можно увидеть в "Память - выделенная память". Но боюсь, для языков с широкм использованием динамического связывания это не годится.
...
Рейтинг: 0 / 0
О применимость языков
    #39040475
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. И я не буду и не хочу его реализовывать. Я не хочу что-то доказывать любой ценой.

Надеюсь ты понимаешь?
...
Рейтинг: 0 / 0
О применимость языков
    #39040493
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл,
Так можно результаты не смотреть, а перекомпилировать те же исходники на современных платформах.
Не думаю, что твоя задача даст иное распределение, чем SCimark.
Насколько я понял SCimark гоняет Java-апплет на разных ОС и версиях JRE. Это не то что я хотел.
...
Рейтинг: 0 / 0
О применимость языков
    #39040517
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Зимаргл

Adxв) никакой связи между занимаемой памятью и лагами в интерфейсе нет.
Это неверно. Проверяется следующим образом - щелкаем по интерфесу дНетовской софтинки и смотрим как меняется показатель "Ошибки страниц" в Диспетчере задач. Это подгрузка с диска интерфейсных классов.

Лучше обсуждать не абстрактное "понимание", а факт того, что дНет показывает во всех тестах наихудшие результаты из всех компетиторов.


Еще раз. "Интерфейсные классы" с диска в .Net не грузятся. Там вообще нет такого понятия. Раз уж Вы хотите отсутствие абстракций.
А тесты в студию. Особенно "все".
А то некоторые любят сравнивать. Под Си++ пишут printf(), а под С# - форму с компонентами, кнопкой, окошком для вывода, а потом говорят - "Вы видели, как медленно все работает?"
Хотите чистую производительность? Отключите все лишние сборки и напишите консольное приложение.
Не хотите консольное? Тогда выбирайте сопоставимые по функционалу интерфейсы.
...
Рейтинг: 0 / 0
О применимость языков
    #39040518
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЗимаргл,
Так можно результаты не смотреть, а перекомпилировать те же исходники на современных платформах.
Не думаю, что твоя задача даст иное распределение, чем SCimark.
Насколько я понял SCimark гоняет Java-апплет на разных ОС и версиях JRE. Это не то что я хотел.
Это просто кусок вычислительного кода.
http://math.nist.gov/scimark2/index.html
...
Рейтинг: 0 / 0
О применимость языков
    #39040521
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглТак можно результаты не смотреть, а перекомпилировать те же исходники на современных платформах.
Не думаю, что твоя задача даст иное распределение, чем SCimark.

К тому же для задач такого типа важнее возможность кластеризации, чем пиковая производительность на отдельной машине.

Про Scimark уже отписал мысли.

По поводу кластеризации - согласен. Это тренд нового времени. Но Петрав к сожалению навязывает нам
достаточно ограниченную повестку. Более того. Он жонглирует монопольным доступом ко всей памяти.
Неслыханная щедрость. Что-ж. Вот так вот на широкую ногу живут Авиаторы. Мне так не жить.
...
Рейтинг: 0 / 0
О применимость языков
    #39040585
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А. Прошу прщения. В SciMark есть сишная имплементация LU, FFT e.t.c. По тексту репорта совершенно было неочевидно.
...
Рейтинг: 0 / 0
О применимость языков
    #39040739
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглСтарые ссылки:
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.
> lzma b
LZMA 15.06 beta : Igor Pavlov : Public domain : 2015-08-09
AMD Athlon(tm) II X2 250 Processor (100F63)
CPU Freq:  4266  2000  4266  4000  2723  2752  3282  2985  2981
RAM size:    4095 MB,  # CPU hardware threads:   2
RAM usage:    425 MB,  # Benchmark threads:      2

                       Compressing  |                  Decompressing
...
----------------------------------  | ------------------------------
Avr:             174   2591   4499  |              195   2881   5625

> java -showversion SevenZip.LzmaAlone b
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

LZMA (Java) 4.61  2008-11-23
       Compressing                Decompressing
...
---------------------------------------------------
  1456 KB/s    1715 MIPS      19893 KB/s    1954 MIPS    Average
Типа, це-код рвёт жабный, как тузик грелку.
Но есть нестыковка: ява-код не обновлялся с версии 4.61 (ноябрь 2008) и он однопоточный, а ядер у моего проца два и lzma.exe честно грузит оба.
Я считаю, что
-если размер обрабатываемых данных в памяти существенно больше кода в памяти, то на сваппинг можно забить
-в остальных случаях - объем кода имеет значение в двух больных местах - вымывании кэша процессоров и page faultsВы уже профилировили "пофигу что" или ваше утверждение следует из общей эрудиции и банальной логики?
Я, например, знаю пример, когда желание экомонить ресурсы (отложенная инициализация) создало вполне реальные проблемы.
Более того, я знаю , что это была экономия на спичечных опилках.
-на разных задачах сравнить футпринт размещения на диске и в оперативной памяти всего фреймворка.
-оценить, насколько в системах с ВМ, повторно используется код фреймворка в памяти. Т.к.возможность динамического изменения кода может потребовать своей копии каждой задаче.
-засечь page faults при различных задачах (разнообразное использование фреймворка.vs.много обрабатываемых данных) по мере занятости памяти системы"Код, сестра! Код!"
...
Рейтинг: 0 / 0
О применимость языков
    #39040753
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, можешь подчеркнуть цифры которые сравниваешь. Ни пса нипонятно в этом отчете.
...
Рейтинг: 0 / 0
О применимость языков
    #39040786
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
> lzma b

LZMA 15.06 beta : Igor Pavlov : Public domain : 2015-08-09

AMD Athlon(tm) II X2 250 Processor (100F63)
CPU Freq:  4266  2000  4266  4000  2723  2752  3282  2985  2981

RAM size:    4095 MB,  # CPU hardware threads:   2
RAM usage:    425 MB,  # Benchmark threads:      2

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       4409   171   2506   4289  |      67426   199   2910   5797
23:       4338   173   2556   4420  |      65136   195   2918   5679
24:       4184   176   2553   4499  |      61791   194   2818   5460
25:       4192   174   2749   4787  |      62122   193   2878   5564
----------------------------------  | ------------------------------
Avr:             174   2591   4499  |              195   2881   5625
Tot:             184   2736   5062



> java -showversion SevenZip.LzmaAlone b
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)


LZMA (Java) 4.61  2008-11-23


       Compressing                Decompressing

   741 KB/s     873 MIPS      13837 KB/s    1359 MIPS
  1599 KB/s    1884 MIPS      20277 KB/s    1992 MIPS
  1621 KB/s    1909 MIPS      21787 KB/s    2140 MIPS
  1640 KB/s    1932 MIPS      21903 KB/s    2152 MIPS
  1640 KB/s    1932 MIPS      20177 KB/s    1982 MIPS
  1620 KB/s    1907 MIPS      21903 KB/s    2152 MIPS
  1640 KB/s    1932 MIPS      20177 KB/s    1982 MIPS
  1640 KB/s    1932 MIPS      21903 KB/s    2152 MIPS
  1640 KB/s    1932 MIPS      20177 KB/s    1982 MIPS
  1640 KB/s    1932 MIPS      20177 KB/s    1982 MIPS
---------------------------------------------------
  1456 KB/s    1715 MIPS      19893 KB/s    1954 MIPS    Average
...
Рейтинг: 0 / 0
О применимость языков
    #39040820
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНо есть нестыковка: ява-код не обновлялся с версии 4.61 (ноябрь 2008) и он однопоточный, а ядер у моего проца два и lzma.exe честно грузит оба.
Для чистоты эксперимента надо ампутировать одно ядро :)
В 7-ке вызвать msconfig, вкладка "Загрузка", кнопка "Дополнительно"
...
Рейтинг: 0 / 0
О применимость языков
    #39040822
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, круть. Спасибо за тестинг.

Еще попробуй плиз выставить ключик -XX:CompileThreshold=1.
(со ссылкой на http://www.oracle.com/technetwork/articles/java/vmoptions-jsp-140102.html)

Спасибо.
...
Рейтинг: 0 / 0
О применимость языков
    #39040833
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TBasil A. SidorovНо есть нестыковка: ява-код не обновлялся с версии 4.61 (ноябрь 2008) и он однопоточный, а ядер у моего проца два и lzma.exe честно грузит оба.
Для чистоты эксперимента надо ампутировать одно ядро :)
В 7-ке вызвать msconfig, вкладка "Загрузка", кнопка "Дополнительно"
Согласен. Ценное замечание. Я-бы еще поигрался с ключами

Код: plaintext
1.
start /NUMA ? /AFFINITY ? java .... 



Счастливые обладатели пингвина или чорта в кедах - тоже теоретически
имеют контроль над защёлкиванием процесса на ядрах но как это
сделать щас - не скажу. Не помню.
...
Рейтинг: 0 / 0
О применимость языков
    #39040837
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХУ задача упаковка/распаковка не совсем корректна для таких тестов. Она заточена под прямой доступ к памяти, т.е. изначально в пользу С/С++. Не удивлюсь что еще есть заточка на уровне проца, т.к. задача распространенная и ресурсоемкая, могли какие-нибудь команды для ускорения добавить.

Надо что-то что обычно решают на высокоуровневых языках.
...
Рейтинг: 0 / 0
О применимость языков
    #39040852
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то я из любопытства разбирал sun-вские пакеты zip/gzip/gif сжатия и дошёл
до того что их реализация Deflater сокрыта в виде native кода. Но я надеюсь что в данном
тесте это не так. В противном случае этот тест был-бы фикцией т.к не являлся-бы
pure-java.
...
Рейтинг: 0 / 0
О применимость языков
    #39040854
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
> java -XX:CompileThreshold=1 SevenZip.LzmaAlone b

LZMA (Java) 4.61  2008-11-23


       Compressing                Decompressing

  1131 KB/s    1332 MIPS      13128 KB/s    1289 MIPS
  1601 KB/s    1885 MIPS      26256 KB/s    2579 MIPS
  1662 KB/s    1957 MIPS      23813 KB/s    2339 MIPS
  1682 KB/s    1981 MIPS      26256 KB/s    2579 MIPS
  1682 KB/s    1981 MIPS      26256 KB/s    2579 MIPS
  1662 KB/s    1957 MIPS      26256 KB/s    2579 MIPS
  1660 KB/s    1955 MIPS      26256 KB/s    2579 MIPS
  1662 KB/s    1957 MIPS      26256 KB/s    2579 MIPS
  1662 KB/s    1957 MIPS      23813 KB/s    2339 MIPS
  1660 KB/s    1955 MIPS      23953 KB/s    2353 MIPS
---------------------------------------------------
  1585 KB/s    1867 MIPS      23233 KB/s    2282 MIPS    Average[/quot]
Улучшается только первая итерация, но в нормальном тесте просто отбрасывают лучший и худший результат.
Серверная JVM и так достаточно агрессивна:
Код: 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.
SciMark 2.0a

Composite Score: 568.3506218310973
FFT (1048576): 66.55551614455881
SOR (1000x1000):   935.8544791529565
Monte Carlo : 424.90769440670203
Sparse matmult (N=100000, nz=1000000): 634.2520724473486
LU (1000x1000): 780.1833470039207

java.vendor: Oracle Corporation
java.version: 1.8.0_45
os.arch: amd64
os.name: Windows 7
os.version: 6.1

SciMark 2.0a

Composite Score: 561.6350935539
FFT (1048576): 72.16917306462969
SOR (1000x1000):   944.7948166789479
Monte Carlo : 412.18495821043985
Sparse matmult (N=100000, nz=1000000): 619.292424683843
LU (1000x1000): 759.7340951316397

java.vendor: Oracle Corporation
java.version: 1.8.0_45
os.arch: x86
os.name: Windows 7
os.version: 6.1

SciMark 2.0a

Composite Score: 547.9017122140733
FFT (1048576): 72.56086544151044
SOR (1000x1000):   940.1591993585062
Monte Carlo : 397.97696153370623
Sparse matmult (N=100000, nz=1000000): 610.6141753418613
LU (1000x1000): 718.1973593947819

java.vendor: Oracle Corporation
java.version: 1.8.0_45
os.arch: x86
os.name: Windows 7
os.version: 6.1
...
Рейтинг: 0 / 0
О применимость языков
    #39040855
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TИМХУ задача упаковка/распаковка не совсем корректна для таких тестов. Она заточена под прямой доступ к памяти, т.е. изначально в пользу С/С++. Не удивлюсь что еще есть заточка на уровне проца, т.к. задача распространенная и ресурсоемкая, могли какие-нибудь команды для ускорения добавить.


А лучше всего под такие задачи на OpenCL писать. Если графическая карточка в компе имеется. )
...
Рейтинг: 0 / 0
О применимость языков
    #39040859
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Далеко не все GPU-вычисления "лучше": как только требуется доставить до видимокарты (много) исходных данных и забрать (большой) результат - всё резко плохеет.
...
Рейтинг: 0 / 0
О применимость языков
    #39040866
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GPU-вычисления так и останутся в сегменте невостребованного. Там где нужна широкая
шина взаимодействия с I/O и портами будет неизбежный провал. Архитектура такова ибо.

Ковыряние bitcoin-ов это другое дело. Но как часто нам по жизни оно надо? У меня вот
узкое место - это собственно процесс компилляции проекта. Уж чего только не придумывал.
Почти принципиально неоптимизируемый процесс. Можно только структуру проекта
побить на модули разве что.
...
Рейтинг: 0 / 0
О применимость языков
    #39040909
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
maytonGPU-вычисления так и останутся в сегменте невостребованного.


Как раз Ваша идея о проверке производительности CPU с помощью алгоритма рендеринга 3D-графики - классический пример востребованности. )
Работа с графикой и видео - туда же.
Проекты Folding@home и Rosetta@home убедительно доказали, что перенос части расчета на GPU дает колоссальный выигрыш и в научных вычислениях.
...
Рейтинг: 0 / 0
О применимость языков
    #39040912
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdxmaytonGPU-вычисления так и останутся в сегменте невостребованного.


Как раз Ваша идея о проверке производительности CPU с помощью алгоритма рендеринга 3D-графики - классический пример востребованности. )
Работа с графикой и видео - туда же.
Проекты Folding@home и Rosetta@home убедительно доказали, что перенос части расчета на GPU дает колоссальный выигрыш и в научных вычислениях.
Я-же говорил что я не претендую на ПРАВИЛЬНОСТЬ обоснования задачи.
Предложите ваши варианты. Должны быть охвачены сегменты CPU/Memory/IO.
По отдельности.
...
Рейтинг: 0 / 0
О применимость языков
    #39040915
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
maytonЯ-же говорил что я не претендую на ПРАВИЛЬНОСТЬ обоснования задачи.
Предложите ваши варианты. Должны быть охвачены сегменты CPU/Memory/IO.
По отдельности.

Ничего против Вашей задачи я не имею. То, что она идеально ложится на связку CPU+GPU не означает, что она не подходит для сравнения языков по CPU. Впрочем, я о классе задач, возможно предложенный Вами вариант на GPU и не ложится. Нужно смотреть детально алгоритм.
...
Рейтинг: 0 / 0
О применимость языков
    #39040922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходник на сях уже готов. Возможно сегодня опубликую отдельным топиком. Осталось портировать его
на Java/C#/Python.
...
Рейтинг: 0 / 0
О применимость языков
    #39040923
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если развести философию по теме, то С/С++ такой же фрэймворк/виртуальная машина над ассемблером, как и другие языки. Только наиболее близко опущенный до уровня асма. У каждого проца есть свои плюсы и минусы, но в связи с тем что даже x86/x64 процов целый зоопарк (Intel на каждом шаге добавляет новые команды и оптимизирует старые), то уже никто не заморачивается на подгонку софта под проц. Заметил когда баловался расчетом простых чисел , небольшая подстройка алгоритма меняет скорость работы в разы на одном компе и почти не влияет на другом. Т.е. идеал - подстройка асм-кода под конкретный проц, т.е. учесть имеющийся набор команд, размер кэшей и т.д. Уверен что есть куча рекомендаций от производителей процов по этому поводу, но т.к. писать под весь зоопарк на асме задача неподъемная (большинству), то был придуман С (точнее он был придуман в эпоху предыдущего зоопарка, но не суть). Благодаря его широкому распространению выгодно дорабатывать компиляторы, поэтому тот же самый код собранный более свежим компилятором работает быстрее. На 100% уверен что EXE после современного компилятора не заработает на первом 32-битном проце Intel 386. Более того, пытаясь поставить линукс на не столь старый ноут с Pentium M, удивился что он не встает, т.к. там нет какого-то поднабора команд для работы с большими наборами памяти, интел тогда счел их ненужными для ноутов.

Выше приведенный аргумент что виртуальные машины/интерпретаторы/jit-компиляторы написаны на С/С++ не выдерживает никакой критики. А чего не на асме с учетом особенностей конкретного проца? Может было бы быстрее на 10-200%.

Тесты производительности тоже ниочем. Ну получили производительность в 2-3 раза быстрее, а завтра надо будет расшириться в 100 раз и все равно упремся в предел, что делать? Какая разница если предел есть? Не важно наступит он завтра или послезавтра, главное что наступит.

Поэтому пофиг на чем писать (задачи требующие реалтайм опускаем). Главное писать так чтобы при наступлении пределов был четкий план как их обойти. Вопрос ресурсов тут вторичный, т.е. сколько денег на железо потребуется. Но если это не прогнозировать, то в один прекрасный день наступит понимание что проблема усилением железа не решается и надо начинать разработку с нуля, а это на порядки больше денег.
...
Рейтинг: 0 / 0
О применимость языков
    #39040943
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЕсли развести философию по теме, то С/С++ такой же фрэймворк/виртуальная машина над ассемблером, как и другие языки. Только наиболее близко опущенный до уровня асма. У каждого проца есть свои плюсы и минусы, но в связи с тем что даже x86/x64 процов целый зоопарк (Intel на каждом шаге добавляет новые команды и оптимизирует старые), то уже никто не заморачивается на подгонку софта под проц.
Если ты не в курсе, то ассемблер это не самый нижний уровень. Есть еще уровень внутреннего микрокода конкретного процессора. На нем надо писать.

Вообще то я писал, что реальная производительность сейчас упирается не в скорость вычислений (качество компилятора), а в размеры ресурсов для его обслуживания. Т.е. считаем вроде быстро, но следующий кусок кода приходится подгружать с другой планеты (диска).
...
Рейтинг: 0 / 0
О применимость языков
    #39040945
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглЕсли ты не в курсе, то ассемблер это не самый нижний уровень. Есть еще уровень внутреннего микрокода конкретного процессора. На нем надо писать.
Если честно - не в курсе. На асме писал 20 лет назад.

ЗимарглВообще то я писал, что реальная производительность сейчас упирается не в скорость вычислений (качество компилятора), а в размеры ресурсов для его обслуживания. Т.е. считаем вроде быстро, но следующий кусок кода приходится подгружать с другой планеты (диска).
Если мои выводы почитал, то понял бы что пофиг откуда последний кусок кода берется. В итоге такого "успешного" кода будет тупик требующий полной переписки кода. Еще раз: главное алгоритмы позволяющие масштабируемость, на чем они реализованы - вторично, т.е. пофиг на чем написано.
...
Рейтинг: 0 / 0
О применимость языков
    #39040993
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглЕсли ты не в курсе, то ассемблер это не самый нижний уровень. Есть еще уровень внутреннего микрокода конкретного процессора. На нем надо писать.
Если вы писали - то поделитесь полезными юзкейсами. Ту инфу которую я собирал по этому вопросу
можно количественно охарактеризовать как "ноль инфы". Всё недокументировано. Vendor-depends.
В некоторых форумах спецы по железу фиксили проблемы конкретных моделей или линеек накатывая
микрокод от производителя.
...
Рейтинг: 0 / 0
О применимость языков
    #39041073
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглЭто неверно. Проверяется следующим образом - щелкаем по интерфесу дНетовской софтинки и смотрим как меняется показатель "Ошибки страниц" в Диспетчере задач. Это подгрузка с диска интерфейсных классов.
Это верно при первом запуске. Пока они не попали в кэш диска ОС.
Включил комп. Запускаю MSSQL Managment Studio 2012 (.Net 4.0) Процесс ssms.exe: Хрустит винтом секунд 7-8, Ошибок страниц 38 000.
Закрываю. Запускаю снова, 1-2 секунды, ошибок страниц 39 000, винта не слышно.

Все потому что нужный код уже в кэше ОС. Формально ошибка страницы это когда код/данные отсутствуют в памяти процесса, а вот откуда они будут подгружаться - это данный параметр никак не учитывает. При достаточном количестве оперативки проблемы чтения с HDD неактуальна. Остается только проблема со скоростью записи.
...
Рейтинг: 0 / 0
О применимость языков
    #39041079
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C# пока только начинаю осваивать, поэтому знаю чуть-чуть теории и 0 практики.
Как понимаю основные тормоза при старте тяжелого приложения из-за JIT-компиляции, которая идет при каждом запуске. Но этого можно избежать если откомпилировать сборку заранее https://msdn.microsoft.com/ru-ru/library/6t9t5wcf(v=vs.110).aspx
Там правда как-то все мутно и не просто, но думаю если разобраться, то вполне применимо.
...
Рейтинг: 0 / 0
О применимость языков
    #39041113
Фотография 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++.
...
Рейтинг: 0 / 0
О применимость языков
    #39041188
Cpt. Gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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++.
Роберту нужно было в начале предложения добавить "ИМХО"
Говорить, что Джава "слабее, из-за того, что в ней нет множественного наследования, указателей и шаблонов как-то уж очень холли варно..
...
Рейтинг: 0 / 0
О применимость языков
    #39041203
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
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 нет тех вещей, которые специально оттуда убрали. Лафоре такой подход не нравится - его право.
...
Рейтинг: 0 / 0
О применимость языков
    #39041209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким числом датируется это сообщение?
...
Рейтинг: 0 / 0
О применимость языков
    #39041223
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

В общем скачал новую платформу VS2015 и пересмотрел Scimark2.

Почти ничего не поменялось - только Си ушел в еще более дальний отрыв. ~1.5 раза быстрее дНета4 и Явы7.

Ну и немного соврал про аутсайдера - это Дельфи7 с троекратным отрывом =)
Кто захочет - пересоберет на новой Дельфе сам.
...
Рейтинг: 0 / 0
О применимость языков
    #39041248
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TВключил комп. Запускаю MSSQL Managment Studio 2012 (.Net 4.0) Процесс ssms.exe: Хрустит винтом секунд 7-8, Ошибок страниц 38 000.
Закрываю. Запускаю снова, 1-2 секунды, ошибок страниц 39 000, винта не слышно.


А Вам не приходило в голову, что Managment Studio грузит сборки не просто так? Что они нужны? Что там полезный код и данные? И что там при старте происходит множество вещей. Не понимаю, почему долгая загрузка сама по себе - это плохо.
По ошибкам. Вам (скорее Зимарглу ) не кажется, что большое количество ошибок связано с отсутствие необходимого количества физической памяти? Можно сколько угодно ругать современный софт за высокие требования к объему ОЗУ, но ничего не изменится. Managment Studio вполне ложится в эту концепцию. Можно еще поругать сайты за требования к скорости интернета и проца. Опять же они объем памяти жрут своими многомегабайтными страницами.
Речь идет о том, как быть, если Вам нужно написать небольшое и быстрое приложение, не отягощенное десятками визуальных библиотек и разнообразных ресурсов. Например, Вы пишите сервис, которому интерфейс не нужен в принципе. Или консольное приложение. Я понимаю применимость именно в таком смысле.
...
Рейтинг: 0 / 0
О применимость языков
    #39041252
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Зимаргл,

Где Вы берете исходники под эти языки? Дайте ссылку.
...
Рейтинг: 0 / 0
О применимость языков
    #39041256
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Зимаргл,
и напишите, пожалуйста, характеристики машины, на которой Вы все это тестировали.
...
Рейтинг: 0 / 0
О применимость языков
    #39041267
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю что явление "прогрева двигателя" специфично не только для сред платформеров.
Того-же эффекта можно достигать в Oracle, запрашивая индексный доступ к крупной таблице.
Первый пуск будет всегд медленным. В сетях TCP/IP я также наблюдал явление когда
"первый" IP пакет в цепочке пробивает себе дорогу ощутимо медленно.
...
Рейтинг: 0 / 0
О применимость языков
    #39041279
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимарглmayton,

В общем скачал новую платформу VS2015 и пересмотрел Scimark2.

Почти ничего не поменялось - только Си ушел в еще более дальний отрыв. ~1.5 раза быстрее дНета4 и Явы7.

Ну и немного соврал про аутсайдера - это Дельфи7 с троекратным отрывом =)
Кто захочет - пересоберет на новой Дельфе сам.
Зимаргл. А есть данные по .Net и Java7 в сравнении? Можешь табличку сделать?
...
Рейтинг: 0 / 0
О применимость языков
    #39041284
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
mayton,
кэш есть даже у процессора.
Аж три уровня. Да еще какие-то данные могут быть сохранены в регистрах ... )
...
Рейтинг: 0 / 0
О применимость языков
    #39041310
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Ресурсы можно рассматривать как пирамиду РОН/L1-L2/Memory/PagingFile.

Или еще играя в пасьянс с AFFINITY тоже получать различные конфигурации
для мультипоточности.

Интересно как наш летчик решает проблемы отклика для такой пирамидальной
архитектуры? Или у него нет пирамидки ресурсов. Мдя.
...
Рейтинг: 0 / 0
О применимость языков
    #39041323
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере.
...
Рейтинг: 0 / 0
О применимость языков
    #39041337
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TПодучи матчасть как виндовс устроен. Хорошая книжка Джеффри РИХТЕР "Windows для профессионалов", там все разжевано доступным языком. Вкратце: загрузка DLL в память процесса происходит маппингом файла, т.е. DLL файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере.

Ошибки страниц происходят тогда, когда процесс обращается к странице памяти, которая отсутствует в рабочем наборе. Для устранения некоторых ошибок страниц требуется получить содержимое страницы с диска, а другие можно устранить без обращения к диску .
Справка Microsoft по TM в Windows 7. (с)

Обращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать?
...
Рейтинг: 0 / 0
О применимость языков
    #39041362
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adx Ошибки страниц происходят тогда, когда процесс обращается к странице памяти, которая отсутствует в рабочем наборе. Для устранения некоторых ошибок страниц требуется получить содержимое страницы с диска, а другие можно устранить без обращения к диску .
Справка Microsoft по TM в Windows 7. (с)
Это не противоречит тому что я написал. Читай Рихтера если интересно.

AdxОбращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать?
Давай, только это к обсуждаемому вопросу не имеет отношения. Я под DLL подразумевал код самой библиотеки .Net, а не сборки.
...
Рейтинг: 0 / 0
О применимость языков
    #39041369
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере.
Именно так. Следовательно, чем больше фремворк, тем больше своппинга. Попал в кэш - хорошо, но чтение из дискового кэша тоже недешевая операция.

Если использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно.
...
Рейтинг: 0 / 0
О применимость языков
    #39041370
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не проверял .net native компиляцию, т.к. нет win10 под рукой.
...
Рейтинг: 0 / 0
О применимость языков
    #39041393
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл 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. Вобщем надо разбираться.
Процедурально я уже знаю ЧТО делать но пока не знаю как.
...
Рейтинг: 0 / 0
О применимость языков
    #39041439
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TЭто не противоречит тому что я написал. Читай Рихтера если интересно.

Противоречит. Не все ошибки связаны с диском. Вы путаете разные понятия.

AdxОбращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать?
Давай, только это к обсуждаемому вопросу не имеет отношения. Я под DLL подразумевал код самой библиотеки .Net, а не сборки.[/quot]

Библиотеки .Net - это сборки, это раз. То, что они называются DLL - это ничего не значит. Важен механизм работы.
И два, у Вас идут рассуждения о Managment Studio, а теперь Вы говорите об основных библиотеках .Net.

Напишите консольное приложение "Hello world" и отключите ВСЕ системные сборки .Net.
Вы получите приложение размером в 5 кб
Оно подгрузит библиотеку mscoree размером в 300кб.
Та в свою очередь будет ссылаться на базовые библиотеки Windows (типа kernel32, user32)
Внимание вопрос. Сколько такое приложение считает с диска при запуске?

Если не знать как работает JVM и .Net, а читать книжки по общим принципам, а остальное додумывать, ничего хорошего не выйдет.
...
Рейтинг: 0 / 0
О применимость языков
    #39041456
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
ЗимарглТам есть готовые .exe под шарп, си и дельфи.


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

В этом смысле тестовая задача интереснее. Меньше кода, проще посмотреть узкие места.
...
Рейтинг: 0 / 0
О применимость языков
    #39041463
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглИменно так. Следовательно, чем больше фремворк, тем больше своппинга. Попал в кэш - хорошо, но чтение из дискового кэша тоже недешевая операция.
Не совсем. Во-первых читается не все, а только то что надо. Во-вторых если оперативной памяти хватает, то повторного чтения не надо.
Правильнее сказать "чем больше разных объектов фремворка использовано, тем больше своппинга".

Например смотрим тот же 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.
BOOL KillProcess(LPCTSTR pcszEXE)
{
    BOOL bRet = FALSE;
	HANDLE hProcessSnap = NULL; 
	HANDLE hProcess = NULL;
	__try
	{
		if(lstrcmp(pcszEXE, _T("")) == 0)
		{
			return FALSE;
		}
		LPTSTR pszName = NULL;
		DWORD dwKillPID = 0;
		PROCESSENTRY32 pe32 = {0}; 
		pe32.dwSize = sizeof(PROCESSENTRY32); 

		hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 

		if (hProcessSnap != INVALID_HANDLE_VALUE) 
		{
			if(Process32First(hProcessSnap, &pe32)) 
			{
				do 
				{ 
					pszName = pe32.szExeFile + lstrlen(pe32.szExeFile);
					while(pszName > pe32.szExeFile && *pszName != _TCHAR('\\')) 
						pszName--;
					if(*pszName == _TCHAR('\\')) pszName++;
					if(lstrcmpi(pszName, pcszEXE) == 0)
					{
						dwKillPID = pe32.th32ProcessID;
						bRet = TRUE;
					}
				} 
				while (!bRet && Process32Next(hProcessSnap, &pe32)); 
			}
			CloseHandle(hProcessSnap);
			hProcessSnap = NULL;
			if(dwKillPID != 0)
			{
				hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwKillPID);
				if(hProcess != NULL)
				{
					TerminateProcess(hProcess, 0);
					WaitForSingleObject(hProcess, 1000);
					CloseHandle(hProcess);
					hProcess = NULL;
				}
			}
		}
	}
	__except(EXCEPTION_EXECUTE_HANDLER)
	{
		__try
		{
			if(hProcessSnap != NULL) CloseHandle(hProcessSnap); 
			if(hProcess != NULL) CloseHandle(hProcess); 
		}
		__except(EXCEPTION_EXECUTE_HANDLER)
		{
		}
	}
    return (bRet); 
}

Код на C#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        static Boolean KillProcess(String ProcName) {
            Process[] Processes = Process.GetProcesses();
            foreach (Process Prs in Processes) {
                if (Prs.ProcessName == ProcName) {
                    try {
                        Prs.Kill();
                        return true;
                    } catch(System.ComponentModel.Win32Exception) {
                        Console.WriteLine("Ошибка закрытия {0}", ProcName);
                    }
                }
            }
            return false;
        }


Согласись что второй вариант заметно компактнее.
ЗимарглЕсли использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно.

Не проверял .net native компиляцию, т.к. нет win10 под рукой.
Я пока до этого не дошел в шарпе, ничего не скажу. Пока "Hello world" осваиваю :)

По поводу предварительных компиляций я так понял что это есть как минимум начиная с 4.0 которая под XP работает, но там есть своя специфика: компилить надо на компе где будет работать, еще кое-какие ньюансы надо учесть. Есть вместе с фрэймворком NGEN.EXE , который этой компиляцией занимается если попросить.
Глубоко не вникал, рано мне еще, читал в книге "Дж. Рихтер CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#"
...
Рейтинг: 0 / 0
О применимость языков
    #39041484
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TСогласись что второй вариант заметно компактнее.

... Глубоко не вникал, ...

А так же использует кучу классов из сборок, которые мы не собираемся грузить из за экономии времени загрузки. Нет уж, только хардкор.
...
Рейтинг: 0 / 0
О применимость языков
    #39041494
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Зимаргл Следовательно, чем больше фремворк, тем больше своппинга.

Если использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно.

Зачем Вам ВЕСЬ фреймворк? Первое предложение неверно в корне.
...
Рейтинг: 0 / 0
О применимость языков
    #39041502
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adx,

я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал.
Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет.
...
Рейтинг: 0 / 0
О применимость языков
    #39041503
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TЗапустил свою поделку консольную на C# - 1,4 Мб.

Это очень много. Ищите, где лишний код ;)
...
Рейтинг: 0 / 0
О применимость языков
    #39041506
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AdxЗимарглТам есть готовые .exe под шарп, си и дельфи.


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

В этом смысле тестовая задача интереснее. Меньше кода, проще посмотреть узкие места.
Там есть исходный код. Бери, компилируй с разными ключами. Смотри код.

Я собственно, потому результаты и не стал выкладывать, что у каждого они будут немного свои.


Dima T.... Запустил свою поделку консольную на C# - 1,4 Мб.
...
Опять же все зависит о задачи. Насколько критично сэкономить 10-100 Мб ОЗУ, фремворк это ж не только занимание памяти, но и облегчение и ускорение разработки.
...

Ты не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач.
К примеру тот же Скимарк занимает 3Мб в Си варианте и 11Мб в С#.

Насколько критично 50Мб Озу на процесс вебсервера можешь посмотреть в статье про multitenant JVM выше по топику.
...
Рейтинг: 0 / 0
О применимость языков
    #39041511
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 2000х виндах я как-то ради интереса анлизировал зависимости консольного HelloWorld приложения.
Вобщем оно всегда зависит от user*.dll, kernel*.dll, gdi*.dll + еще пяток библиотек.
...
Рейтинг: 0 / 0
О применимость языков
    #39041516
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TAdx,

я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал.
Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет.

Без проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить.
1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET
Независимо от размера всего фреймворка.
2) В .NET есть много механизмов загрузки сборок. Можно загрузить ее в память сразу, и потом уже не происходит обращения к диску.
3) Ошибки страниц не стопроцентный показатель, зависит от приложения.
4) Насчет кэширования Вы писали, замечу только, что своппинг генерит ошибки страниц со страшной силой.
...
Рейтинг: 0 / 0
О применимость языков
    #39041532
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
ЗимарглТам есть исходный код. Бери, компилируй с разными ключами. Смотри код.

Я собственно, потому результаты и не стал выкладывать, что у каждого они будут немного свои.

...

Ты не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти.

Я думал, для C# тоже есть.
У меня 5 mb.
...
Рейтинг: 0 / 0
О применимость языков
    #39041564
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл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. т.е. фрэймворк реальную память займет один раз. Другой вопрос сколько займет каждый процесс во время работы, но это уже не только от фрэймворка зависит, но и от кривизны рук разработчика.
...
Рейтинг: 0 / 0
О применимость языков
    #39041616
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я встречал конфигурации когда на 1 хосте запускают 2 JBoss в балансере. На обоих одно и то-же приложение.
Не в кластере но взаимодействующе с общим пулом БД.

Таким образом админы на стороне заказчика подстраховывались от внезапных падений. У них был демон
который периодически ходил на http порт и вытягивал ответ и анализировал отклик. Если отклик превышал
3-5 секунд то демон давал kill + ребут для экземпляра jboss который подвис.
...
Рейтинг: 0 / 0
О применимость языков
    #39041621
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdxDima TAdx,

я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал.
Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет.

Без проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить.
1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET
Независимо от размера всего фреймворка.
2) В .NET есть много механизмов загрузки сборок. Можно загрузить ее в память сразу, и потом уже не происходит обращения к диску.
3) Ошибки страниц не стопроцентный показатель, зависит от приложения.
4) Насчет кэширования Вы писали, замечу только, что своппинг генерит ошибки страниц со страшной силой.
1. Согласен. Обратного не утверждал.
2. Согласен. Обратного не утверждал.
3. У тебя просто недопонимание как все устроено, почитай книжку про устройство виртуальной памяти, адресное пространство процесса и т.п.
Пример (кратко): процесс А спроецировал в свое адресное пространство файл (пофиг какой EXE, DLL, TXT), затем произошло обращение к первому байту (пофиг как: данные прочитать или код там выполнить) происходит исключение, менеджер памяти его перехватывает, читает с диска первые 4 кб файла в реальную память (вот она страница), подставляет эту реальную память просессу и возвращает управление проге, прога дальше работает. Запускается прога Б, проецирует этот же файл, обращается к первому байту, происходит исключение, счетчик ошибок страниц увеличивается, но менеджер памяти видит что эта страница уже есть в реальной памяти, поэтому он НЕ читает с диска, он просто подсовывает ее в процесс Б. Т.е. два процесса А и Б реально используют одни и теже 4 кб реальной памяти.
4. Свопинг это результат ошибок страниц, т.е. когда данных/кода нет в памяти они читаются с диска. Кроме того есть еще запись в своп для освобождения памяти. Читай книжку :)
...
Рейтинг: 0 / 0
О применимость языков
    #39041655
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cpt. GrayРоберту нужно было в начале предложения добавить "ИМХО"
Говорить, что Джава "слабее, из-за того, что в ней нет множественного наследования, указателей и шаблонов как-то уж очень холли варно..
"У пистолета Макарова нет автоматического режима огня, оптического прицела и патрона, позволяющего поражать цели на значительном удалении. Поэтому по мощи и универсальности он уступает автомату". Не вижу в этой фразе ничего холиварного, просто констатация факта.
...
Рейтинг: 0 / 0
О применимость языков
    #39041673
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AdxБез проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить.
1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET
Независимо от размера всего фреймворка.

Докажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве.
...
Рейтинг: 0 / 0
О применимость языков
    #39041678
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima T,
У Вас некоторая путаница. Вы пишите что происходит при загрузке файла в определенной ситуации. А потом обобщаете это на все понятие "ошибки страниц". И все это завязывается на загрузку приложения и набор его DLL (сборок, которые можно грузить по-разному и в разное время). С механизмом загрузки файла я не спорю, не нужно меня в этом убеждать.
Ладно, тема не об этом. Основное - это первые два пункта. Если тут спора нет, то значит эти вопросы не к Вам )

softwarer"У пистолета Макарова нет автоматического режима огня, оптического прицела и патрона, позволяющего поражать цели на значительном удалении. Поэтому по мощи и универсальности он уступает автомату". Не вижу в этой фразе ничего холиварного, просто констатация факта.

Не согласен. Автомат не подходит для скрытого ношения, занимает много места, мощность патрона избыточна во многих ситуациях (рикошеты и пули на излете). Где универсальность? )
...
Рейтинг: 0 / 0
О применимость языков
    #39041680
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdxНе согласен. Автомат не подходит для скрытого ношения, занимает много места, мощность патрона избыточна во многих ситуациях (рикошеты и пули на излете). Где универсальность? )
Представьте себе список различных возможных ситуаций и галочки "пистолет подходит - не подходит", "автомат подходит - не подходит". Универсальность в количестве галочек.
...
Рейтинг: 0 / 0
О применимость языков
    #39041686
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
ЗимарглAdxБез проблем. Вы оба исходите по некоторым вопросам из неверных предположений. Я пытался это объяснить.
1) Простое приложение на .NET грузит диск (эта самая подкачка) ничуть не больше чем написанное на C++ безо всякого .NET
Независимо от размера всего фреймворка.

Докажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве.

Какого интерфейса?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
using System;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine();
            Console.WriteLine(@"hello world");
            Console.ReadLine();
        }
    }
}



Вот код. Посчитай ошибки страниц. Консольное приложение под .NET, VS 2013, сборок в references нет. Убираем отладку и ставим оптимизацию.
...
Рейтинг: 0 / 0
О применимость языков
    #39041689
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T2. у нас N процессов одной и той же проги, то займет она Рабочий набор + (N - 1) * Частный рабочий набор.
Затестил. Подтверждается моя теория.
Text.exeWin 32 без консоли .Net 4.0
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    class Program
    {
        static void Main(string[] args)
        {
            for (Int32 i = 0; i < 10; i++) {
                Thread.Sleep(1000);
            }
        }
    }


Рабочий набор 6,1 Мб
Выделенная память 4,8 Мб
Частный рабочий набор 1,4 Мб
Запустил 100 процессов, наблюдал в диспетчере параметр "Физическая память (Мб) всего свободно". Для 100 процессов уменьшилось на 162-166 Мб. Т.е. ~1,6 Мб на процесс.
...
Рейтинг: 0 / 0
О применимость языков
    #39041715
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглДокажи. Я предъявлял ошибки страниц при использования интерфейса. И их гораздо больше в дНет программе, чем в написанной С++ и даже на Яве.
Тот же тест 18100590 каждый из 100 процессов показывает 1500 ошибок страниц, но это не означает 150000 обращений к диску.
Выше писал
Dima TПример (кратко): процесс А спроецировал в свое адресное пространство файл (пофиг какой EXE, DLL, TXT), затем произошло обращение к первому байту (пофиг как: данные прочитать или код там выполнить) происходит исключение, менеджер памяти его перехватывает, читает с диска первые 4 кб файла в реальную память (вот она страница), подставляет эту реальную память просессу и возвращает управление проге, прога дальше работает. Запускается прога Б, проецирует этот же файл, обращается к первому байту, происходит исключение, счетчик ошибок страниц увеличивается, но менеджер памяти видит что эта страница уже есть в реальной памяти, поэтому он НЕ читает с диска, он просто подсовывает ее в процесс Б. Т.е. два процесса А и Б реально используют одни и теже 4 кб реальной памяти.
Я к тому что ты некорректно трактуешь значение "ошибки страниц". По твоему 1 ошибка = 1 чтение с диска. Это не так.
...
Рейтинг: 0 / 0
О применимость языков
    #39041740
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тот же тест на С
Test.exeWin 32 без консоли
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include <windows.h> 

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	for(int i = 0; i < 10; i++) Sleep(1000);
	return 0;
}


Рабочий набор 2,0 Мб
Выделенная память 0,6 Мб
Частный рабочий набор 0,5 Мб
Ошибок страниц 533
Запустил 100 процессов, наблюдал в диспетчере параметр "Физическая память (Мб) всего свободно". Для 100 процессов уменьшилось на 48-52 Мб. Т.е. ~0,5 Мб на процесс.

Как бы не намного разница: .Net занял на 1 Мб больше.

Что касается ошибок страниц, так они точно сответствуют формуле Рабочий набор*256, т.к. 1 Мб = 256 страниц. Т.е. в данном случае это просто показатель сколько используется страниц в виртуальном адресном пространстве данного процесса.
...
Рейтинг: 0 / 0
О применимость языков
    #39041745
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги.

Я думаю что нам стоит пока отложить замер "ошибок страниц".
Я имею в виду в отношении бенчмаркок С++/Java/dNet/Python. Бох весть еще какие цифры
у нас полезут в Linux окружении. Это путает карты.
...
Рейтинг: 0 / 0
О применимость языков
    #39041756
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TРабочий набор 6,1 Мб
Выделенная память 4,8 Мб
Частный рабочий набор 1,4 Мб

У меня этот же код:

Рабочий набор 5,3 Мб
Выделенная память 4,4 Мб
Частный рабочий набор 1,1 Мб

Все, прекращаю оффтопить )
...
Рейтинг: 0 / 0
О применимость языков
    #39041759
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо какой-то тест изобрести, близкий к реальности, но не очень тривиальный. Линуксы предлагаю пока в стороне оставить.

Вариант теста: сгенерить текстовый файлик с иерархическим списком но в разнобой, затем отсортировать, сохранить в другой файл.
типа23.44.1. опдлываопдл
1.2. павлыопыавлопж
...
формат строки: X.X....X.{пробел}текст
где X 1-2 знака. Количество Х-ов до 5. Общая длина строки до 100 байт.

Замеряем:
1. Время на загрузку
2. Время на сортировку
3. Время на сохранение

Размер исходного файла подобрать чтобы 5-10 сек молотило.

Могу генератор написать чтоб файлик у всех одинаковый был. Тогда результат на корректность можно будет по CRC проверить.
...
Рейтинг: 0 / 0
О применимость языков
    #39041771
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdxУ меня этот же код ...
Объяснимо: у меня VS2010 у тебя вроде 2013 (если не путаю). .Net соответственно 4.0 и 4.5.
Значит MS не сидит сложа руки, допиливает и что приятно - в нужную сторону :)
AdxВсе, прекращаю оффтопить )
Присоединяюсь
...
Рейтинг: 0 / 0
О применимость языков
    #39041838
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПоэтому по мощи и универсальности он уступает автоматуУниверсальность автомата заканчивается на "личное оружие ближнего боя".
Тоже констатация факта, но обе - бессмысленные.
...
Рейтинг: 0 / 0
О применимость языков
    #39041846
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonКоллеги.

Я думаю что нам стоит пока отложить замер "ошибок страниц".
Я имею в виду в отношении бенчмаркок С++/Java/dNet/Python. Бох весть еще какие цифры
у нас полезут в Linux окружении. Это путает карты.
Это отдельный тест. В Линухе существенное отличие на переключение контекста и мютексы всякие. На вычислительном тесте это не видно.


Dima T,
нужно больше использования фреймворка, а не простых операций.

Можно взять создание 100 экз какого нибудь одинакового окна с кнопочками. Или еще какого объекта, который в иерархии классов фреймворка имеет много предков.
...
Рейтинг: 0 / 0
О применимость языков
    #39041858
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Зимаргл,

Сравнивать визуальные оболочки, написанные на разных системах/языках, абсурдно. Я под С++ и C# напишу десяток разных интерфейсов с разными характеристиками. Сравнивать нужно одинаковый код, насколько это возможно, конечно. И уж визуальные библиотеки подходят для этого меньше всего. А то давайте тогда сравним MS Paint и Adobe Photoshop по памяти и скорости загрузки.
...
Рейтинг: 0 / 0
О применимость языков
    #39041868
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном топике мы обсуждали принципиальную возможность описать и закодить
любой алгоритм на языке-платформере в т.ч. и тайм-критичные алгоритмы. Типа
DOSBox, или игры Doom.

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

Кстати нам неизбежно придётся коснуться таких аспектов как пропускная способность
и скорость отклика.
...
Рейтинг: 0 / 0
О применимость языков
    #39041885
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглDima T,
нужно больше использования фреймворка, а не простых операций.
Согласен. Тест синтетический. Но он показывает умение конкретного фрэймворка подстроиться под написаный на нем код.

Но это второстепенно, даже третьестепенно. Главная задача фрэймворка увязать возможности нижнего уровня (С, Асм) с простотой написания кода. Яркий пример FoxPro, на котором я и пишу восновном, подобный тест даже не буду выкладывать, проиграет по всем параметрам. Но на фоксе можно легко делать такие вещи, которые вызовут глубокую зависть конкурентов. Недавно демонстрировали мою поделку одной достаточно большой компании, сбежался весь ИТ-отдел, смотрел и утверждал что такое невозможно. Вроде элементарные вещи показывали когда по слову " О брикос" находит все "Абрикосы". Любой гугл это умеет. А это просто помесь фокса и Си в правильных пропорциях :)
...
Рейтинг: 0 / 0
О применимость языков
    #39041888
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если я введу "Абрамс" - найдет "Абрикос" ? :)
...
Рейтинг: 0 / 0
О применимость языков
    #39041893
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА если я введу "Абрамс" - найдет "Абрикос" ? :)
Нет. Количество ошибок ограничено. Читай про расстояние Левенштейна. Хотя ты и так знаешь не читая :)
Следующий шаг - использовать релевантность.

ЗЫ Правда получилось что "желтый" ~= "белый"
...
Рейтинг: 0 / 0
О применимость языков
    #39041905
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВроде элементарные вещи показывали когда по слову " О брикос" находит все "Абрикосы".
"Вспомним молодость" ...
В середине 90-х в одной из организаций в шкафах "бухгалтеров" была тьма толстых подшивок с данными
по основным фондам /газопроводы/.
Так как данных была "тьма", то ни кто даже помыслить не смел, чтобы все это "богатство" можно было
ввести в компьютер и тем более /о чудо/ он будет давать верные цифры.
Но один амбициозный /был грех/ молодой парень сказал - "Хотите через 2 месяца у вас весь архив будет
в компьютере и получать все желаемые вам отчеты в любых разрезах".
Так как организация видела мои предыдущие работы, то они согласились на подписание договора ...

А теперь самое интересное.
Нужно было ввести не мало символьных данных /наименование улиц, тип, длина, ... труб ... ...
Что сделал.
Разработал на Foxpro алгоритм, который "на лету" пополнял базу введенных слов ...
Так вот для ввода строки выше мне достаточно было ввести "ррбтл на Fpo агтм ктрй "на лту" плнл бзу ввх сов ...".
Остальное на автомате находилось в базе слов и разворачивал в фразу
"Разработал на Foxpro алгоритм, который "на лету" пополнял базу введенных слов ..."
Были и еще трюки ...

PS: "Теперь вы понимаете как мне в таких условиях легко работалось".
Через два месяца заказчик и исполнитель поучили какдый то чего хотел ...
...
Рейтинг: 0 / 0
О применимость языков
    #39041910
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иной раз читая topics вижу буйную фантазию и фейерверк непоколебимо "истинных" суждений ...
Иногда правда бывает желание "обсудить" их, но часто осаждаю себя мыслью типа - "Ты разве не знаешь чем все это закончится? Займись ка лучше Владимир текущей работой - больше толку будет" ...

PS: Нет ну действительно иногда парни так настойчивы в своих "истинных" суждениях, что лучше к ним
и "не подходить" ...
...
Рейтинг: 0 / 0
О применимость языков
    #39041911
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AdxЗимаргл,

Сравнивать визуальные оболочки, написанные на разных системах/языках, абсурдно. Я под С++ и C# напишу десяток разных интерфейсов с разными характеристиками. Сравнивать нужно одинаковый код, насколько это возможно, конечно. И уж визуальные библиотеки подходят для этого меньше всего. А то давайте тогда сравним MS Paint и Adobe Photoshop по памяти и скорости загрузки.
Т.е ты не в состоянии написать одинаковое окошко на разных языках. Я понял. Балаболы не нужны.
...
Рейтинг: 0 / 0
О применимость языков
    #39041937
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012PS: Нет ну действительно иногда парни так настойчивы в своих "истинных" суждениях, что лучше к ним
и "не подходить" ...
Да. Мы такие бро. Мы пережили Луговского с его С++срачем. Переварили Дедала с Базистом.
Что-уж нам.

А прикинь что Зимаргл и Adx - это один и тот-же человек. И спорит сам с собой... Мдя... И такое бывает.
А ты думал тут фе. А тут Ооооо!
...
Рейтинг: 0 / 0
О применимость языков
    #39041965
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглТы не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач.
Большинство управляемых сред сразу выделяют пул памяти для приложения. За счёт этого дальшейшее выделение памяти под объекты происходит очень быстро. Именно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку.
И пока в системе достаточно свободной памяти, дотнет не будет её отдавать. Но как только память кончится, ОС пнёт CLR, та станет пинать сборщик мусора, он проснётся и удалит мусор, и неиспользуемую память отдаст.
Так что минимальный футпринт будет много меньше мегабайта.

Если позарез необходимо, футпринт можно уменьшить вручную:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
using System.Runtime.InteropServices;
using System.Diagnostics;


[DllImport("kernel32")]
static extern bool SetProcessWorkingSetSize(IntPtr handle, int minSize, int maxSize);


SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
...
Рейтинг: 0 / 0
О применимость языков
    #39041971
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikБольшинство управляемых сред сразу выделяют пул памяти для приложения. За счёт этого дальшейшее выделение памяти под объекты происходит очень быстро. Именно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку.
Вы имеете в виду, что нативный код отдельно дёргает системный вызов ради каждых шестнадцати байт? Не секрет ли, где Вы такой нативный код видели? :)
...
Рейтинг: 0 / 0
О применимость языков
    #39041980
Factorize
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikИменно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку.
И пока в системе достаточно свободной памяти, дотнет не будет её отдавать.

[/src]

А толку то? :) В нативном коде можно написать менеджер памяти, который порвет как тузик грелку этот дотнет.
...
Рейтинг: 0 / 0
О применимость языков
    #39041982
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верно ли то, что на Java программист не может писать иначе как в ОО стиле ?
Вот что BS пишет о С++:
BS Язык программирования С++C++ создавался с целью добавления поддержки абстракции данных, объектно-ориентированного и обобщенного программирования к традиционному языку С с учётом указанных ограничений. Не подразумевалось принуждение всех пользователей к какому-либо конкретному стилю программирования.

И если первое утверждение верно, и с учётом второй цитаты(в целом достаточно очевидной с точки зрения информативности, но от этого не менее важной), даже если бы программы на Java работали со скоростью аналогичной с С++(кто-то выше говорил, что 2, 2,5 раза ерунда, однако представьте если бы время отклика на каждую операцию на вашем домашнем компьютере увеличилось бы хотя бы в два раза), даже несмотря на это, С++ был бы предпочтительней.

Я может быть что-то пропустил, а что создатели Java говорят о своём языке, если можно, процитируйте пожалуйста.
...
Рейтинг: 0 / 0
О применимость языков
    #39041996
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryВерно ли то, что на Java программист не может писать иначе как в ОО стиле ? Выучишь Java - узнаешь.

SashaMercuryИ если первое утверждение верно, и с учётом второй цитаты(в целом достаточно очевидной с точки зрения информативности, но от этого не менее важной), даже если бы программы на Java работали со скоростью аналогичной с С++(кто-то выше говорил, что 2, 2,5 раза ерунда, однако представьте если бы время отклика на каждую операцию на вашем домашнем компьютере увеличилось бы хотя бы в два раза), даже несмотря на это, С++ был бы предпочтительней.А зачем нам это представлять? Мы программами на Java пользуемся практически постоянно. Например все утилиты управления базами данных написаны на Java, ну кроме MSSQL для которой пишут на .Нет. Так проще делать кросс-платформенный код.
Все телфоны и планшеты с Android внутри - java.
Предпочтительней? Кому? Пользователям пофиг. Разработчикам - Java проще.
Выиграем мы (пользователи) если все это будет переписано на С++? Ну да, пару-тройку микросекунд выиграем. А толку?

SashaMercuryЯ может быть что-то пропустил, а что создатели Java говорят о своём языке, если можно, процитируйте пожалуйста.Открываешь учебник по Java и читаешь.
...
Рейтинг: 0 / 0
О применимость языков
    #39042000
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Если Java поддерживает только программирование с ОО стиле, то в этом плане этот язык однобок. Или у нас 99 % задач должны решаться в объектно-ориентированном стиле ?
2. Смотря какая операция, где-то мы проиграем пару микросекунд, а где-то несколько секунд. От этого факт не изменится, какое-то время мы потеряем практически на любых задачах.
...
Рейтинг: 0 / 0
О применимость языков
    #39042008
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury1. Если Java поддерживает только программирование с ОО стиле, то в этом плане этот язык однобок. Или у нас 99 % задач должны решаться в объектно-ориентированном стиле ?
Писать в процедурном стиле можно и на ОО языках.
SashaMercury2. Смотря какая операция, где-то мы проиграем пару микросекунд, а где-то несколько секунд. От этого факт не изменится, какое-то время мы потеряем практически на любых задачах.
Таких операций очень мало когда критично время. Если пишешь клиентскую часть - их всего 0,1%, зато куча кода типа "если нажали эту кнопочку - показать эту форму" и не критично покажется она за 50 мс или за 150 мс. Также не критично займет форма 1 Мб или 3 в памяти.
А те критичные к времени и/или памяти 0,1% можно написать на чем-нибудь другом. Я пишу на С, делаю DLL и ее использую.
...
Рейтинг: 0 / 0
О применимость языков
    #39042010
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Dima T]SashaMercury1. Если Java поддерживает только программирование с ОО стиле, то в этом плане этот язык однобок. Или у нас 99 % задач должны решаться в объектно-ориентированном стиле ?
Писать в процедурном стиле можно и на ОО языках.
[quot]

И Си в какой-то мере позволяет писать программы в ООС. Однако, BS, например, говорит: Язык поддерживает определенный стиль программирования в том случае, если он представляет средства которые делают использование данного стиля удобным.
...
Рейтинг: 0 / 0
О применимость языков
    #39042013
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryDima TПисать в процедурном стиле можно и на ОО языках.

И Си в какой-то мере позволяет писать программы в ООС. Однако, BS, например, говорит: Язык поддерживает определенный стиль программирования в том случае, если он представляет средства которые делают использование данного стиля удобным.
Это не противоречит тому что я написал.
Там не утверждается что в ОО языках неудобно писать в не ОО стиле.
...
Рейтинг: 0 / 0
О применимость языков
    #39042021
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FactorizepetalvikИменно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку.
И пока в системе достаточно свободной памяти, дотнет не будет её отдавать.

[/src]

А толку то? :) В нативном коде можно написать менеджер памяти, который порвет как тузик грелку этот дотнет.
Можно ускорить аллокации к примеру. При деаллокациях вам придётся выбрирать
между расходом памяти и скоростью особождения и дефрагментации. Вобщем
на любой аллокатор можно написать контр-пример его использования.

Кстати вопрос написания умного аллокатора неизбежно приводит
к появлению различного рода т.н. "умных указателей" и концепции GC.
Круг обсуждения снова замкнётся на эффективных алгоритмах
мусоросборки.
...
Рейтинг: 0 / 0
О применимость языков
    #39042143
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
ЗимарглAdxЗимаргл,

Сравнивать визуальные оболочки, написанные на разных системах/языках, абсурдно. Я под С++ и C# напишу десяток разных интерфейсов с разными характеристиками. Сравнивать нужно одинаковый код, насколько это возможно, конечно. И уж визуальные библиотеки подходят для этого меньше всего. А то давайте тогда сравним MS Paint и Adobe Photoshop по памяти и скорости загрузки.
Т.е ты не в состоянии написать одинаковое окошко на разных языках. Я понял. Балаболы не нужны.

На WinApi? Без проблем. Вы не понимаете разницу между библиотекой, языком и платформой. Увы.
Любителям сравнивать по скорости и цене автомобили Мерседес А класс и Ладу Калину - читать книжки.
...
Рейтинг: 0 / 0
О применимость языков
    #39042754
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВы имеете в виду, что нативный код отдельно дёргает системный вызов ради каждых шестнадцати байт? Не секрет ли, где Вы такой нативный код видели? :)
Вижу в каждом первом приложении.

FactorizeА толку то? :) В нативном коде можно написать менеджер памяти, который порвет как тузик грелку этот дотнет.
В дотнете как раз и используется такой менеджер памяти.
Да, его можно написать в неуправляемых языках, но это будет по сути то, что уже есть в управляемых средах.

Где этот менеджер будет брать память? Из пула. Память под этот пул запрашивается у операционной системы на старте приложения. Оп-па! То есть футпринт приложения стал большим. Именно к большому футпринту дотнета были претензии.
Так что либо расход памяти под пул (большой футпринт) и быстрое её выделение, либо медленное выделение и малый футпринт.

К тому же по выделению памяти этот менеджер не порвёт дотнет. По освобождения - да, запросто. Там, где GC будет долго пыхтеть, в рукописном менеджере можно одним махом отдать весь этот пул обратно системе.

А теперь главное: покажите мне менеджер памяти, который отдаст неиспользуемую в данный момент память по запросу ОС. Между тем CLR/JVM это сделают.
...
Рейтинг: 0 / 0
О применимость языков
    #39042759
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прошу понять меня правильно.

Я не пытаюсь оспорить тот факт, что нативный код быстрей управляемого. Это очевидно.

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

Однако, дотнет движется в правильную сторону. Не так давно появился .NET Native - компиляция в нативный код при развёртывании приложения. Ускоряет загрузку, улучшает быстродействие. При этом остаётся удобство управляемого кода во время разработки.
...
Рейтинг: 0 / 0
О применимость языков
    #39042760
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalviksoftwarerВы имеете в виду, что нативный код отдельно дёргает системный вызов ради каждых шестнадцати байт? Не секрет ли, где Вы такой нативный код видели? :)
Вижу в каждом первом приложении.
Ну попробуйте посмотреть во второе, что ли.

petalvikДа, его можно написать в неуправляемых языках, но это будет по сути то, что уже есть в управляемых средах.
Уважаемый, как бы Вам сказать деликатно.... его не "можно написать в неуправляемых языках". Его "написали в них", причём задолго до того, как кому-то пришло в голову сделать "управляемые среды", если не считать такой Пи-систему .
...
Рейтинг: 0 / 0
О применимость языков
    #39042807
maytonВладимир2012PS: Нет ну действительно иногда парни так настойчивы в своих "истинных" суждениях, что лучше к ним
и "не подходить" ...
Да. Мы такие бро. Мы пережили Луговского с его С++срачем. Переварили Дедала с Базистом.
Что-уж нам.

А прикинь что Зимаргл и Adx - это один и тот-же человек. И спорит сам с собой... Мдя... И такое бывает.
А ты думал тут фе. А тут Ооооо!

Данный пост найден средствами всемогущего Стебелька .
Бойтесь, бойтесь бородатые Оракловоды !
...
Рейтинг: 0 / 0
О применимость языков
    #39042814
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот как раз по *выделению* памяти языки с GC однозначно рвут С++.

Управляемый хип позволяет относительно перемещать данные в памяти, что сильно упрощает аллокацию. На каждый поток приложения выделяется свой буфер под аллокации и вперед.

Никакой синхронизации не надо, искать подходящего размера "дырки" в выделенной памяти не надо. Просто увеличиваешь текущий указатель на нужный тебе размер и вперед. Когда буфер заканчивается, просто аллоцируется новый. А получившееся мессиво из аллоцированных и свободных кусков уплотняется дефрагментатором параллельно.
...
Рейтинг: 0 / 0
О применимость языков
    #39042824
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerего не "можно написать в неуправляемых языках". Его "написали в них", причём задолго до того, как кому-то пришло в голову сделать "управляемые среды"
В неуправляемом коде по умолчанию память как будет выделяться? Может, всё-таки, нужно дополнительно менеджер памяти писать/брать откуда-то, для быстрой аллокации?

LISP считаем управляемой средой?
...
Рейтинг: 0 / 0
О применимость языков
    #39042837
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikВ неуправляемом коде по умолчанию память как будет выделяться?
Ответ ровно тот же, что и для управляемого. Так, как по умолчанию работает менеджер памяти соответствующей RTL библиотеки.

petalvikМожет, всё-таки, нужно дополнительно менеджер памяти писать/брать откуда-то, для быстрой аллокации?
Сомневаюсь. Я ровно один раз в жизни видел менеджер памяти, который выделял память описанным Вами способом - через системные вызовы - и как раз его требовалось "откуда-то брать и специально подключать". В принципе, я допускаю, что где-то сохранились компиляторы, чьи RTL работают таким способом, но сомневаюсь в их распространённости. Впрочем, даже если так - не вижу смысла пол-дня ломать копья из-за "проблемы", которая решается за тридцать секунд.
...
Рейтинг: 0 / 0
О применимость языков
    #39042852
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvikЗимарглТы не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач.
Большинство управляемых сред сразу выделяют пул памяти для приложения. За счёт этого дальшейшее выделение памяти под объекты происходит очень быстро. Именно по скорости выделения памяти дотнет рвёт нативный код как Тузик тряпку.
И пока в системе достаточно свободной памяти, дотнет не будет её отдавать. Но как только память кончится, ОС пнёт CLR, та станет пинать сборщик мусора, он проснётся и удалит мусор, и неиспользуемую память отдаст.
Так что минимальный футпринт будет много меньше мегабайта.

Это не совсем так. В WindowsXP и выше С++ CRT использует родной ОС менеджер хипа (::HeapAlloc() etc) . Не особо вижу, как надстройка CLR над этим же менеджером может что то ускорить )
Подтверждение этого можно увидеть, открыв исходники CRT.

Далее, если верить Руссиновичу, по дефолту хип 1Мб. Соответственно, футпринт меньше можно сделать только в нативном коде, вмешиваясь в исходник CRT, и никак иначе.

AdxЗимарглпропущено...

Т.е ты не в состоянии написать одинаковое окошко на разных языках. Я понял. Балаболы не нужны.

На WinApi? Без проблем. Вы не понимаете разницу между библиотекой, языком и платформой. Увы.
Любителям сравнивать по скорости и цене автомобили Мерседес А класс и Ладу Калину - читать книжки.
Если ты не понял, то мы и сравниваем Формулу1 в виде С++ и дНет как что то типа Ларгуса с прицепом на все случаи жизни.

Первый результат я уже получил.
Одинаковые приложения: на компилируемом языке имеет при загрузке 3х кратный выигрыш по ошибкам страниц по сравнению с JVM.
Окошки SWT и там и там
Допишу какие нибудь циклы и таймеры и посмотрю как прогрессирует.
...
Рейтинг: 0 / 0
О применимость языков
    #39042909
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikLISP считаем управляемой средой?
Лисп вообще-то был пионером в области управляемых куч (сред?).
...
Рейтинг: 0 / 0
О применимость языков
    #39042962
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглНе особо вижу, как надстройка CLR над этим же менеджером может что то ускорить
это не надстройка
...
Рейтинг: 0 / 0
О применимость языков
    #39043068
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглПервый результат я уже получил.
Одинаковые приложения: на компилируемом языке имеет при загрузке 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.
#include <stdio.h>
#include <time.h>
#include <windows.h>

void test(char* fname)
{
	printf("open file %s ... ", fname);
	HANDLE f = CreateFile(fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if( f == INVALID_HANDLE_VALUE) {
		printf("error %d\n", GetLastError());
		return;
	}
	unsigned int size = SetFilePointer(f, 0, 0, FILE_END);
	SetFilePointer(f, 0, 0, FILE_BEGIN);
	printf("Ok\nsize %u Mb\n", size / 1048576);

	printf("map create ... ");
	HANDLE fm = CreateFileMapping(f, NULL, PAGE_READONLY, 0, size, NULL);
	if(!fm) {
		printf("error %d\n", GetLastError());
		CloseHandle(f);
		return;
	}
	printf("Ok\n");

	printf("map to memory ... ");
	char* mem = (char*) MapViewOfFile(fm, FILE_MAP_READ, 0, 0, size);
	if(!mem) {
		printf("error %d\n", GetLastError());
	} else {
		printf("Ok\n");
		char* end = mem + size;
		// Расчет контрольной суммы файла 10 раз
		for(int i = 0; i < 10; i++) {
			char res = 0;
			char* ptr = mem;
			while(ptr < end) {
				res ^= *ptr;
				ptr++;
			}
			printf("%5d msec checksum %d\n", clock(), res);
			Sleep(1000); // Чтобы успеть что-нибудь увидеть в диспетчере
		}
		UnmapViewOfFile((void*) mem);
	}
	CloseHandle(fm);
	CloseHandle(f);
}

int main(int argc,char **argv) {
	if(argv[1]) {
		test(argv[1]);
	} else {
		printf("test.exe filename\n");
	}
	system("pause");
}


Принцип следующий: делается проекция файла в память и считается контрольная сумма. По сути загрузка фрэймворка технически тоже самое.
Первый запуск
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
open file C:\Download\ubuntu-13.10-desktop-i386.iso ... Ok
size 895 Mb
map create ... Ok
map to memory ... Ok
 8283 msec checksum 59
10062 msec checksum 59
11653 msec checksum 59
13291 msec checksum 59
14898 msec checksum 59
16504 msec checksum 59
18127 msec checksum 59
19734 msec checksum 59
21325 msec checksum 59
22932 msec checksum 59

Ошибок страниц 459291
Второй запуск
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
open file C:\Download\ubuntu-13.10-desktop-i386.iso ... Ok
size 895 Mb
map create ... Ok
map to memory ... Ok
  733 msec checksum 59
 2511 msec checksum 59
 4134 msec checksum 59
 5740 msec checksum 59
 7363 msec checksum 59
 8985 msec checksum 59
10608 msec checksum 59
12261 msec checksum 59
13884 msec checksum 59
15506 msec checksum 59

Ошибок страниц 459290

Для тестов взял файл 895 Mb. Как видишь в первом случае первый расчет шел 8 сек, во втором 0,7 сек. Т.е. 7,3 сек в первый раз это чтение файла с диска, во второй - файл уже был в кэше виндовса.
Ну и по расходу памяти: один процесс занимает ожидаемые 920 Мб. Запускаем одновременно 4 копии, каждая занимает по 920, у каждой по 459 тыс. ошибок страниц. Но памяти у меня всего 2,4 Гб свободно. При одновременно работающих 4 копиях размер свободной памяти падает с 2,4 Гб до 1,5 Гб. Т.е. физически в памяти одна копия, которая по очереди подсовывается в каждый процесс.
Все тоже самое касается фрэймворка .Net/Java: если он уже в памяти, то расходы на его подсовывание в конкретный процесс незначительны. В нативном коде при вызове WinAPI происходит тоже самое.
Это я все к тому что показатель "Ошибок страниц" ничего полезного не показывает.

Есть такой параметр как "Ошибок страниц/сек", т.е. сколько было за последнюю секунду. Вот он более реально показывает насколько интенсивно используется подкачка с диска в конкретный момент.
...
Рейтинг: 0 / 0
О применимость языков
    #39043070
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, спасибо за полезное исследование.
...
Рейтинг: 0 / 0
О применимость языков
    #39043119
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TВсе тоже самое касается фрэймворка .Net/Java: если он уже в памяти, то расходы на его подсовывание в конкретный процесс незначительны. В нативном коде при вызове WinAPI происходит тоже самое.
Это я все к тому что показатель "Ошибок страниц" ничего полезного не показывает.

Есть такой параметр как "Ошибок страниц/сек", т.е. сколько было за последнюю секунду. Вот он более реально показывает насколько интенсивно используется подкачка с диска в конкретный момент.
"Ошибок страниц/сек" это именно "Ошибок страниц" деленное в секунду. Показывает тоже самое.

Можешь запустить параллельное чтение двух, трех разных файлов - создашь конкуренцию за кэш.

С программным кодом не совсем так -
-во-первых там много несвязанных маленьких страничек
-во-вторых есть сегменты данных, которые при записи в них создают копию в памяти для каждого процесса
-в третьих, должны быть как минимум таблицы виртуализации для изменяемого кода
...
Рейтинг: 0 / 0
О применимость языков
    #39043154
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл"Ошибок страниц/сек" это именно "Ошибок страниц" деленное в секунду. Показывает тоже самое.
Напутал немного, нет такого параметра вовсе, в 7-ке это "Дельта ошибок страниц", в хэлпе так написано "Изменение количества ошибок страницы со времени последнего обновления."

ЗимарглМожешь запустить параллельное чтение двух, трех разных файлов - создашь конкуренцию за кэш.
Могу, только речь о конкретной задаче, фрэймворк это одни теже файлы в разные процессы.

ЗимарглС программным кодом не совсем так -
-во-первых там много несвязанных маленьких страничек
ИМХУ не принципиально. Подкачка из одного файла или из сотни.
Зимаргл-во-вторых есть сегменты данных, которые при записи в них создают копию в памяти для каждого процесса
-в третьих, должны быть как минимум таблицы виртуализации для изменяемого кода
В нативном коде рантайм С/С++ тоже все это создает. WinAPI создает. Прочие либы (если используются) создают.
Вопрос сколько это занимает в байтах.
...
Рейтинг: 0 / 0
О применимость языков
    #39046360
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сводная табличка по использованию памяти разными фреймворками на примере мелких программ

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 процесса (фреймворком)
...
Рейтинг: 0 / 0
О применимость языков
    #39047204
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл, ммм... даже не знаю какие выводы из этой таблички можно сделать.
...
Рейтинг: 0 / 0
О применимость языков
    #39047235
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЗимаргл, ммм... даже не знаю какие выводы из этой таблички можно сделать.Какие бы не сделал - все бессмысленны.
Можно сколько угодно утверждать что один язык лучше другого, но у того другого все равно будут приверженцы, просто потому что им нравится.
...
Рейтинг: 0 / 0
О применимость языков
    #39047334
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зяма провёл офигенскую работу по анализу мемори. Учёл даже промахи страниц. Да только
я не могу придумать как теперь это ранжировать. И почему разные приложения?
Как их сопоставить? Как сравнить грузовик с легковушкой?
...
Рейтинг: 0 / 0
О применимость языков
    #39047435
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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, влияет ли это на скорость и на своппинг
...
Рейтинг: 0 / 0
О применимость языков
    #39047447
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл1. засечь время загрузки и характеристики по памяти для каждого фреймворка, подгрузив определенный набор классов, например:
окошко с элементами + коллекции + xml? + еще что? - обсуждается
1.1 что считать стандартным фреймворком?
D = SWT + Phobos
С# = .net core + WPF
C++ = std:: + MFC? + boost?
Java = Java SE + Swing || JavaFX ?
Объясни зачем мерять память клиентского приложения с гуем? Перфекционизм какой-то
Могу еще понять борьбу за память на сервере.
...
Рейтинг: 0 / 0
О применимость языков
    #39047457
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java в моём способе зарабатывания нефте-долларов - это 80% server-side. В некоторых случаях
есть кросс-компилляторы типа GWT/GWTP которые стоят одной ногой в браузере у пользователя
а другой опираются на некоторый стаб на серверной стороне. Но как таких мерять?

Мемори футпринт в пользовательском браузере? Нонсенс! Его уже 10 лет никто не считает.
Более того. Срут в него безбожно. И не будь в JScript искусственных ограничителей типа
2-4 сокетов на JS или лимита на циклы - то браузер бы умирал через 5 минут после начала
серфинга.

Поэтому здесь

авторJava = Java SE + Swing || JavaFX ?

я не понимаю что считать и как сравнивать. Написать 2 формочки тут и там - это профанация. Не будет теста.
А если два крупных приложения - то никто не будет портировать в Свинг и ФХ. Ибо лень и нет мотива. Одно дело
мы как фан-сектор сели и раскурили рисование блестящих шаров. А другое дело окна. Скушно... Мдя.

Свинг останется как легаси которое выкинуть невозможно. Заменить нечем. JavaFX болеет тем
же чем и апплеты. А именно отсутствием предназначения. Неясно для чего оно ПРЕДНАЗНАЧЕНО.
Мультимедя явно уходит в HTML5. Там и специалистов больше. А ФХ - какой-то сыряк. Хотелось
бы увидеть полноценное приложение на ФХ где есть гриды к оторых я стону и плачу в каждой ветке.
Если кто покажет - буду рад.
...
Рейтинг: 0 / 0
О применимость языков
    #39047473
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглC++ = std:: + MFC? + boost?
Qt
...
Рейтинг: 0 / 0
О применимость языков
    #39047474
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Для засечки времени подгрузки фреймворка достаточно и одного типа окошка.
Можно конечно, оставить только невизуальные (серверные) классы, но я скорее думаю, что проблемы Явы шерифа не волнуют.

maytonМемори футпринт в пользовательском браузере? Нонсенс! Его уже 10 лет никто не считает.
А вот за это "пейсателей" надо на дыбу, т.к. каждое окошко хромиума это овер 100 Мб!
...
Рейтинг: 0 / 0
О применимость языков
    #39047476
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглДля засечки времени подгрузки фреймворка достаточно и одного типа окошка.

Чево? И что нам даст это время?
...
Рейтинг: 0 / 0
О применимость языков
    #39047483
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглА вот за это "пейсателей" надо на дыбу, т.к. каждое окошко хромиума это овер 100 Мб!
Зачем? Есть FireFox. Гугл хром просто супер обнаглел в пожирании памяти, потому я отказался от хрома года 2-3 назад. Пишут что недавно они осознали и решают проблему прожорливости, пусть решают.
...
Рейтинг: 0 / 0
О применимость языков
    #39047490
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХУ x64 это больше маркетинг. Попытка второй раз продать уже проданный софт, а потом еще и впарить более мощное железо, т.к. старое не тянет. Это чудесно, выгодно, но не тема для данного форума.
...
Рейтинг: 0 / 0
О применимость языков
    #39047524
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХУ x64 это больше маркетинг.

фотошоп,СУБД легко утилизируют 2Gb+ памяти
про регистры - отписал в соседем топике

что касается применимости языков - у некоторых спецификаций и реализаций - серьёзные проблемы с массивами длиннее 2^31
...
Рейтинг: 0 / 0
О применимость языков
    #39047539
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилDima TИМХУ x64 это больше маркетинг.

фотошоп,СУБД легко утилизируют 2Gb+ памяти
про регистры - отписал в соседем топике

что касается применимости языков - у некоторых спецификаций и реализаций - серьёзные проблемы с массивами длиннее 2^31
Мы в 2004 юзали Oracle 9i на Xeon-ах с 8 Гб оперативы. При этом ОС и Оракл были 32х битные.
Но buffer-pool юзал порядка 5Гб.

OMG! Каг!
...
Рейтинг: 0 / 0
О применимость языков
    #39047542
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ты ещё вспомни досовский EMM драйвер
...
Рейтинг: 0 / 0
О применимость языков
    #39048362
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМы в 2004 юзали Oracle 9i на Xeon-ах с 8 Гб оперативы. При этом ОС и Оракл были 32х битные.
Но buffer-pool юзал порядка 5Гб.

OMG! Каг! AWE, что гемор. Второй вариант - не помню.
64-разрядный указатель позволяет окучивать большие объемы памяти простым и неизвращённым способом.

P.S. У AS/400 указатель был 128 бит "от рождения". Никто не умирал. Но, правда, там другая схема отображения виртуальных адресов на физическую память.

P.P.S. Нет, аппаратная разрядность AS/400 - те же 52 бита.
...
Рейтинг: 0 / 0
О применимость языков
    #39048376
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилmayton,

ты ещё вспомни досовский EMM драйвер
Уже вспомнил.
...
Рейтинг: 0 / 0
О применимость языков
    #39071234
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем я дописал тестик.
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.
/*  speed test SWT
 * based on Snippet165
 */

/*******************************************************************************
 * Copyright (c) 2000, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
//package org.eclipse.swt.snippets;

/*
 * Create a CTabFolder with min and max buttons, as well as close button and
 * image only on selected tab.
 *
 * For a list of all SWT example snippets see
 * http://www.eclipse.org/swt/snippets/
 *
 * @since 3.0
 */
import org.eclipse.swt.*;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import java.util.ArrayList;

// was Snippet165
public class frmWorkTestSWT {

static int numWindows = 500;

static Image image; // box
static Display display;
static ArrayList<Shell> subWindows;
static Label timeRun;

static Shell newWindow()
{
 final Shell shell = new Shell (display);
 shell.setLayout(new GridLayout());
 final CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
 folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
 folder.setSimple(false);
 folder.setUnselectedImageVisible(false);
 folder.setUnselectedCloseVisible(false);
 for (int i = 0; i < 8; i++) {
  CTabItem item = new CTabItem(folder, SWT.CLOSE);
  item.setText("Item "+i);
  item.setImage(image);
  Text text = new Text(folder, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
  text.setText("Text for item "+i+"\n\none, two, three\n\nabcdefghijklmnop");
  item.setControl(text);
 }
 folder.setMinimizeVisible(true);
 folder.setMaximizeVisible(true);
 folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
  @Override
  public void minimize(CTabFolderEvent event) {
   folder.setMinimized(true);
   folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
   shell.layout(true);
  }
  @Override
  public void maximize(CTabFolderEvent event) {
   folder.setMaximized(true);
   folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
   shell.layout(true);
  }
  @Override
  public void restore(CTabFolderEvent event) {
   folder.setMinimized(false);
   folder.setMaximized(false);
   folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
   shell.layout(true);
  }
 });
 shell.setSize(300, 300);
    return shell;
}

public static void main (String [] args) {
 display = new Display ();
 image = new Image(display, 16, 16);
 GC gc = new GC(image);
 gc.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
 gc.fillRectangle(0, 0, 16, 16);
 gc.setBackground(display.getSystemColor(SWT.COLOR_YELLOW));
 gc.fillRectangle(3, 3, 10, 10);
 gc.dispose();
 subWindows = new ArrayList<Shell>();
 final Shell shell = new Shell (display);

    shell.setSize(300, 200);
    shell.setLayout(new FillLayout(SWT.VERTICAL));

    timeRun = new Label (shell, SWT.BORDER);
    timeRun.setText("measure time");
                     
    Button create = new Button (shell, SWT.PUSH);
    create.setText ("Create");
    create.addSelectionListener (new SelectionAdapter(){
        @Override
        public void widgetSelected (SelectionEvent e) {
          long startTime = System.currentTimeMillis();
            for (int i = 0; i < numWindows; i++)
            {
                subWindows.add(newWindow());
                subWindows.get(i).open();
            }
            long endTime   = System.currentTimeMillis();
            long totalTime = endTime - startTime;
            timeRun.setText(String.format("running: %d ms", totalTime));
        }
    });
    Button destroy = new Button (shell, SWT.PUSH);
    destroy.setText ("Destroy");
    destroy.addSelectionListener (new SelectionAdapter(){
        @Override
        public void widgetSelected (SelectionEvent e) {
          long startTime = System.currentTimeMillis();
            for (Shell wn: subWindows)
            {
                wn.dispose();
            }
            subWindows.clear();
            long endTime   = System.currentTimeMillis();
            long totalTime = endTime - startTime;
            timeRun.setText(String.format("running: %d ms", totalTime));
        }
    });

   
    shell.pack();
 shell.open ();
 while (!shell.isDisposed ()) {
  if (!display.readAndDispatch ()) display.sleep ();
 }
 image.dispose();
 display.dispose ();
}
}


Вывод - чем меньше тасуем памяти (с помощью фреймворка), тем быстрее работаем.
Это еще у меня своппинг быстрый - SSD.

P.S.Кому не лень - пробуйте переписать на .net. Думаю результат будет сравним с Явой.
...
Рейтинг: 0 / 0
296 сообщений из 296, показаны все 12 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / О применимость языков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]