|
|
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravИзопропилMyClass *p = new MyClass(); какой такой RAII ? Такой: Код: plaintext 1. 2. а кто будет следить за объектами, с временем жизни несколько дольше, чем вызов функции, создавшей объект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:00 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravЯ эту машину изучал в школе. Лет 20-ть назад. Помню, что бесконечная лента с ячейками чисел, тележка двигается вправо и влево, считывает, записывает, обменивает данные. Как реализовываются условные действия - не помню. Так что извини.Не извиню. Если ты не знаешь базы, то не можешь рассуждать о более продвинутых вещах. Не, можешь кончено, но у тебя всегда будет получаться бред типа того что ты пишешь в этом топике. Ты конечно мастерски держишь флейм, подменяешь понятия, делаешь обобщения на пустом месте, требуешь от оппонентов чего-то мифического и никому не нужного. В этом ты молодец. Тут я снимаю шляпу. Молодец. Давно я не видел такого талантливого тролля. Вот только базу стоит подучить. Более качественный флейм сможешь вести, тебя сложнее будет поймать. А то сейчас ты слишком уж часто делаешь бредовые заявления. Уворачиваешься от ответа ты конечно хорошо, но более высоким классом было бы не давать повода оппонентам на тыканье пальцем: "тут ты не прав". Было бы у тебя образование, сумел бы замаскировать софизмы под наукоемкие фразы, а так.... Тебя слишком легко поймать. В общем, талант у тебя есть. Лет через пять может и пробьешься в большие люди. Дерзай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:04 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravМожно поступить как в Яве: отказаться от полноценного RAII и добавить сборщик мусора. Но тогда придется отказаться от производительности С++. Ты знаешь. Я устал. Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в 1) I/O 2) Network/Http/Rest/Soap 3) Доступ к БД/Оптимизатор запросов 4) Блокировки разделяемых ресурсов среды. 5) Неверный алгоритм или последовательность шагов. Ошибки project-owner или аналитика при описании задачи. Производительность собственно бинарного кода очень редко оказывает сильное влияние. Ну или у меня подобных задач было мало. А когда проблема действительно находилась и после анализа профайлером удалялась - на верх снова поднимались проблемы (1),(2),...e.t.c. Вот с периодом в 6-10 месяцев в Программинге или в Сях или еще бох весь в каком Питоне всплывает очередной топик на тему Как в оперативке отсортировать массив OVER 2млрд целых чисел? Я вскакиваю. Хватаюсь за голову. Пишу. Ребята пятак вашу распротак! Не существует такой постановки. В принципе. Даже зайдя со стороны входных данных. Эти 2 млрд как там появились? Они что телепортировались? А даже если я сделаю чёрный ящик который их сортирует за 1 мс. - Сколько времени я буду публиковать резалт? Куда? Юзайте мать вашу БД! Юзайте БерклиДБ + TreeSet. Юзайте коллекцию класса TreeSet. Не сортируйте массивы! Это пустая трата мегафлопов! Это тупая олимпиадная задачка которую придумали чортовы теоретеки. Она в реальности не имеет прототипа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:15 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonФраза "никаких предположений о типах полей данных этого объекта делать не надо" - требует пояснений или уточнений. Лучше в качестве примера. Предположим нам нужно очень часто создавать и уничтожать объекты типов Т1, Т2 и Т3. Как можно производительнее и с памятью у нас чем — больше тем лучше, сожрем и 16Гб оперативки. Универсальная реализация динамической памяти хороша тем, что может размещать в памяти объекты разных размеров. Но в том то и слабость в производительности. Если писать менеджер динамической памяти, который будет знать, что все объекты имеют одинаковый размер, то он будет работать гораздо быстрее. И так получилось, что все Т1, Т2 и Т3 имеют примерно одинаковый размер. Не больше 512 байт. Необходимо реализовать свой менеджер памяти. Безопасный в работе с типами. С вызовом конструкторов, деструкторов и с полноценным синтаксисом. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Класс Pool у нас универсальный и ничего не должен знать о типах Т1... В следующем проекте будет Т10 например. Так же желательно класс Pool параметризовать алгоритмом поиска свободной памяти и освобождения памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:24 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetravМожно поступить как в Яве: отказаться от полноценного RAII и добавить сборщик мусора. Но тогда придется отказаться от производительности С++. Ты знаешь. Я устал. Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в 1) I/O 2) Network/Http/Rest/Soap 3) Доступ к БД/Оптимизатор запросов 4) Блокировки разделяемых ресурсов среды. 5) Неверный алгоритм или последовательность шагов. Ошибки project-owner или аналитика при описании задачи. Производительность собственно бинарного кода очень редко оказывает сильное влияние. Ну или у меня подобных задач было мало. А когда проблема действительно находилась и после анализа профайлером удалялась - на верх снова поднимались проблемы (1),(2),...e.t.c. Елки палки!!! Так мы и НЕ ГОВОРИМ про энтерпайз! У нас ДРУГАЯ тема разговоров! А так с твоими словами согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:28 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Прошу прощения не "500 количество памяти под зарезервированные объекты", 500 - количество объектов для которых нужно память резервировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:30 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
White OwlТебя слишком легко поймать. Ну у тебя, кроме «ты дурак», пока ничего не получилось в плане «поймать». :) Свои посты-то перечитай... Кроме того, я и бегать ни от кого не хочу. Это твои желания ловить кого-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:34 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav, Код: plaintext 1. (покачиваясь на стуле) Не знаю.... Не нравится мне эта постановка. Я-бы со старта выделил 3 пустых коллекции для T1, T2, T3 и использовал их по мере роста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:40 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Изопропилpetravпропущено... Такой: Код: plaintext 1. 2. а кто будет следить за объектами, с временем жизни несколько дольше, чем вызов функции, создавшей объект? Обычно всё начинается с 1-10 объектов созданных в main() (или глобальные, что хуже), а уж они через указатели (shared_ptr) и контролируют по цепочке всё остальное. Точнее не по цепочке, а в виде дерева размещенных в ОЗУ объектов. Если сеть, то weak_ptr. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonpetrav, Код: plaintext 1. (покачиваясь на стуле) Не знаю.... Не нравится мне эта постановка. Я-бы со старта выделил 3 пустых коллекции для T1, T2, T3 и использовал их по мере роста. Коллекция? std::set? Ну тут совсем не подходит. В коллекцию мы кладем значения, проверяем что они там есть, удаляем. Ну... не знаю как объяснить. Ведь у коллекции и динамического вектора ведь разное назначение? Я уж не говорю про какое-нибудь бинарное дерево поиска. Ну вот нам нужно выделять и освобождать объекты. Нам нужна логика динамической памяти оптимизированной под размещение объектов не больше заданной длинны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 00:45 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravТак мы и НЕ ГОВОРИМ про энтерпайз! У нас ДРУГАЯ тема разговоров! ну так уточните тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 08:11 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravКоллекция? std::set? Ну тут совсем не подходит. В коллекцию мы кладем значения, проверяем что они там есть, удаляем. Ну... не знаю как объяснить. Ведь у коллекции и динамического вектора ведь разное назначение? Я уж не говорю про какое-нибудь бинарное дерево поиска. Ну вот нам нужно выделять и освобождать объекты. Нам нужна логика динамической памяти оптимизированной под размещение объектов не больше заданной длинны. Ты, как мне кажется "со старта" решаешь несуществующие проблемы. Ты говоришь - нам дескыть нужна логика динамической памяти .. тра-лала ... не более заданой длины. Я говорю - не нужна. Твоя задача решается в лоб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 08:39 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonТы знаешь. Я устал. Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в 1) I/O ... Производительность собственно бинарного кода очень редко оказывает сильное влияние. Ну или у меня подобных задач было мало. А когда проблема действительно находилась и после анализа профайлером удалялась - на верх снова поднимались проблемы (1),(2),...e.t.c. Есть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Присединяюсь к ВайтОвлу, Петрав игнорировать - ни квалификации, ни последовательности в выводах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 11:25 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Как-то сумбурно всё. При чём здесь свопинг непонятно. Кто настраивал конфигурацию? Кто выставлял настройки heap? При чём здесь Питон? Петрав игнорировать - ни квалификации, ни последовательности в выводах. Не согласен. Петрав несёт свой тезис. Просто он его никак не может озвучить. С ним всё время мы сворачиваем на какую-то узкую самолётную предметную область где нужно считать наносекунды на malloc и кодить алгоритмы только на определённых языках. Я с этим не согласен. И жду конкретики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 11:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Присединяюсь к ВайтОвлу, Петрав игнорировать - ни квалификации, ни последовательности в выводах. Есть золотое правило - 90% производительности занимает 10% кода. Сэкономив время на разработке и отладке (Java и C#), можно более серьезно заняться оптимизацией этих 10% - от переработки алгоритма до написании (если уж очень критично) конкретной процедуры на asm. Впрочем последнее редко бывает нужным - разработчики C# и Java серьезно поработали над производительностью стандартных библиотек. Что до жирных фреймворков, то это тоже не совсем так. Неумерное потребление ресурсов вызвано обычно соответствующим отношением программистов к ним. А некоторые даже не догадываются, что некоторые объекты (использующие внешние ресурсы) нужно освобождать принудительно. Причем проблема неумеренного потребления ресурсов браузером сайтами на порядок актуальнее, но никто не парится на эту тему. Увы. По драйверам. Встречался с драйвером, написанным на Delphi. Работал как часы. Никаких проблем, даже на самых медленных машинах. Понятно, что формочек и компонентиков там не было. Не вижу, почему бы там была проблема с C# и Java, хотя с com-портами на этих языках не работал. Понятно, что драйвер видеокарты надо писать на asm и C (и то, там куча формочек с настройками - пиши на чем хочешь), но такого софта 0,001% от всего ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 11:50 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonЗимарглЕсть некоторое исключение - системы с жирным фреймворком типа Явы и донета сжирают сами по себе памяти столько, что время задачи тратится не на вычисления, а на своппинг, упираясь в ИО. Соответственно область применения их сужается настолько, что даже интерпретируемый питон отрабатывает быстрее. Как-то сумбурно всё. При чём здесь свопинг непонятно. Кто настраивал конфигурацию? Кто выставлял настройки heap? При чём здесь Питон? Эмм. Да, ща проясню. Речь про производительность. По прямой вычислительной производительности Ява и дНет проигрывают С++ примерно в 1.5-2 раза, не больше, но: а) Простейшая задач на Яве или дНете сколько мегабайт памяти жрет при старте? Соответственно старт долгий. б) дНет полностью в память не грузится при старте - в программе при обращении к какой то функциональности идет подгрузка (за Яву тут не скажу, от ОС-платформы может зависеть). В принципе мониторингом это видно. А еще лучше видно лаги при открытии нового окошка в какой-нибуть приблуде, типа той же виз.студии >= 2010. в) Питон в противовесный пример. Он по вычислительной скорости проигрывает С в 100 (сто) раз. Но его вирт машина занимает 3(три) Мб памяти целиком. Потому лагов в интерфейсе например нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 20:02 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
maytonПетрав несёт свой тезис. Просто он его никак не может озвучить. С ним всё время мы сворачиваем на какую-то узкую самолётную предметную область где нужно считать наносекунды на malloc и кодить алгоритмы только на определённых языках. Я с этим не согласен. И жду конкретики. Проблема нашего взаимопонимания кроется в том, что ты рассуждаешь исключительно как разработчик энтерпрайз решений. Ты мыслишь в терминах оптимизатора запросов, нормализации БД, денормализации БД, пулов коннкекшинов и потоков, создания API к своим веб-приложениям, вопросов кластеризации и прочего маштабирования. Т.е. ты думаешь исключительно как high level enterprise разработчик. В доказательство твоя цитата: «Я устал доказывать что производительность зачастую лежит не там и ее ищут не так. Из моего личного опыта проблемы производительности энтерпрайза лежали в». Ну так и я устал. Причем ты не разработчик базовых решений — не разработчик СУБД (SQL, MongoDB, например), не разрабатываешь ОС или Web-сервера (IIS, Apache). Ты даже отрицаешь алгоритмы сортировки — конечно, обычно это для тебя делает сервер БД — достаточно грамотно спроектировать структуру БД. А ведь подавляющее число этих технологий (ОС, СУБД, Веб-серверы, компиляторы, веб-браузеры и т.д.) написаны на С/С++ и их разработчики сталкиваются с проблемами, которые ты считаешь не нужными (тебе => и всем остальным). Всё остальное ты отрицаешь как не нужное (или очень узкое). А именно: - Высокопроизводительные расчеты (наука и техника — моделирование). - Реальное время (авиация, автомобилестроение, станкостроение, космос). - Ограниченные вычислительные ресурсы (встраиваемые системы, приборостроение). - ОС, драйвера, СУБД, веб-сервера, веб-браузеры. Какую конкретику ты хочешь? Вот я тебе ставлю задачу описать и разработать наш класс Pool<>, но с максимальной производительностью. Ответ: производительность не нужна, напишу на встроенных в Яву коллекциях. Я тебе предлагаю напиши на Яве union. Ты мне: мне API не хватает. Ну так хотя бы опиши на Яве парадигму RAII. Ответ: Денису Ричи было не нужно и мне не нужно. Ну скачай исходники MySQL, посмотри алгоритмы обслуживания индексов — там 100% прямое манипулирование памятью. Опиши на Яве, Реализуй на Яве, сравни производительность. Реализуй на Яве разряженные матрицы и операции с ними. Сравни с производительностью Boost.uBLAST. И ты поймешь, что не то что реализовывать на Яве было не нужно, а даже и описывать. :) PS: Сказать подробно чем я занимаюсь на работе — я не могу. В России есть заводы где даже сотовые телефоны на проходной сдают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 21:16 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petrav- Высокопроизводительные расчеты (наука и техника — моделирование). - Реальное время (авиация, автомобилестроение, станкостроение, космос). - Ограниченные вычислительные ресурсы (встраиваемые системы, приборостроение). - ОС, драйвера, СУБД, веб-сервера, веб-браузеры. и на койхер здесь везде ++ ? petravСказать подробно чем я занимаюсь на работе — я не могу был бы на улице 1979 год - поверил бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:10 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravСказать подробно чем я занимаюсь на работе — я не могу был бы на улице 1979 год - поверил бы А почему 79-й, а не 37-й? Я ж не про шарашки рассказывал. Или ты родился в 79-м и веришь только про этот год? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:21 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravА почему 79-й, а не 37-й? Я ж не про шарашки рассказывал. тогда откуда столько секретности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:26 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravА почему 79-й, а не 37-й? Я ж не про шарашки рассказывал. тогда откуда столько секретности? В нашей стране куча режимных предприятий. Просто сам факт работы на нём скрывать глупо — все ж через проходную входят и выходят каждый день. От меня требуют конкретики, ну не могу я что-то абстрактное про ракетостроение рассказать, например. Потому что не знаю. И не имею к нему отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:31 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravСказать подробно чем я занимаюсь на работе — я не могу. а подробно не надо веб-серверы пишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:36 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
ИзопропилpetravСказать подробно чем я занимаюсь на работе — я не могу. а подробно не надо веб-серверы пишешь? Нет. Авиационная промышленность. Ничего исключительного или даже особо секретного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:41 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
Ого тут букв. Ну ладно. Буду думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2015, 22:52 |
|
||
|
О применимость языков
|
|||
|---|---|---|---|
|
#18+
petravПечально что вы меня не читаете. Это мой аргумент, что что бы описывать системные алгоритмы на Яве вам придется писать на JVM другую (внутри)Вы бы, мопвашуять, с вопрос ознакомились, что ли ... Технически JVM это совершенно обычная динамически компонуемая библиотека, экспортирующая набор точек входа. Соглашения по вызову - JNI. Если имеющихся экспортов недостаточно для реализации какой-то особо забубённой задачи - пишется ещё одна динамически компонуемая библиотека, которая грузится и используется. Никакой "виртуальной машины внутри виртуальной машины" не делается - решается "чиста канкретная задача". С абстрагированием ситуация несколько иная. Абстрагирование - необходимо, т.к. иначе идёт лесом переносимость с платформы на платформу. Соответственно, когда появится класс задач, где "кровь из носу" требуется без дополнительных прослоек - кто-то сядет, придумает и API и реализацию. Не исключено, что и то и другое будет удачным, а класс задач - очень востребованным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 02:44 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39039471&tid=1340912]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 496ms |

| 0 / 0 |
