powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / О применимость языков
25 сообщений из 296, страница 6 из 12
О применимость языков
    #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
25 сообщений из 296, страница 6 из 12
Форумы / Программирование [игнор отключен] [закрыт для гостей] / О применимость языков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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