|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
lleming, больше с точки зрения надержности, скорости, легкости расширения. Либо дремучий дилетантизм, либо желание все как можно больше запутать. Т. к. эффект - ненадежность, медленность, сложность. Видимо там нечего оптимизировать поэтому и не делал попыток. Вот это вы пошутили. Судя по тому, какие открытия они начали совершать в 2017 году, даже элементарные вещи по перетряхиванию их архитектуры могут принести ощутимый эффект. Но они до этого еще не дошли. Видно, им надо еще 10 лет. Если в цикле создавать новый буфер и загонять туда число чем от приведенного примера отличается ? Тем, что он создается явно и это хотя бы видно в коде. А в Java создается иллюзия удобства и прозрачности, которые Java на самом деле не обеспечивает. можно предсказать это простая логика, если чтото не тратить то это не закончится. Нужно это разжевывать? Речь идет о Java, в которой вообще нет статических переменных, в которой на каждый чих создаются объекты в куче. Вы не можете обеспечить того, что память не будет тратится. Вы можете только махнуть рукой - и так мол сойдет. Если я не прав, объясните, как вы будете гарантировать отсутствие выделений объектов в куче. Если хотите обеспечить то, что не будет тратится - запрещайте динамическую память вообще, делайте все на статических переменных (что в Яве вообще невозможно) и вручную контролируйте все случаи исчерпания массивов и т. п. Как вариант для особо типа приложений jvm рестартовать до того как закончится память. А лучше вообще не запускать. Тогда точно не закончится. Хотя ведь всегда можно сказать, что пользователь идиот и нищеброд, который не захотел лишних 20 гигов оперативки ставить - и поэтому программа падает не раз в день, а раз в час. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 10:51 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Огласили результат что наоборот стало сильно быстрее и меньше тратить памяти. А вы так и верите в их честность? Огласить можно что угодно. Особенно если оценивает свою же работу и употребляет вещества для изменения сознания. Надо хотя бы полные условия тестирования и методику тестов оглашать. Чтобы это было проверяемым со стороны. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 10:56 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewОгласили результат что наоборот стало сильно быстрее и меньше тратить памяти. А вы так и верите в их честность? Огласить можно что угодно. Особенно если оценивает свою же работу и употребляет вещества для изменения сознания. Надо хотя бы полные условия тестирования и методику тестов оглашать. Чтобы это было провряемым со стороны. Ну так в чем проблема посмотри проверь опровергни. Под огласили имеется ввиду не просто ктото сказал на ютубе а сделал тесты и огласил результаты (не сложно было догадаться). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 12:09 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene Newlleming, Видимо там нечего оптимизировать поэтому и не делал попыток. Вот это вы пошутили. Судя по тому, какие открытия они начали совершать в 2017 году, даже элементарные вещи по перетряхиванию их архитектуры могут принести ощутимый эффект. Но они до этого еще не дошли. Видно, им надо еще 10 лет. Вы так яростно критикуете разработчиков новомодных IDE . Судя по Вашим постам у Вас есть достаточно опыта в разработке и оптимищации сложных систем. Чтобы проникнуться вашими идеями не могли бы Вы привести примеры какие проекты Вы реализовывали. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 12:42 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Ну преобразование из одной кодовой системы в другую - требуется только в момент ввода-вывода. Ну и преобразование при вводе-выводе, сейчас все равно требуется. В процессе работы, думаю hash, equils самые частые методы. Сортировка - сейчас и так досаточно сложная задача (т.к. должна поддерживать локализацию), тут уже ничего не усложнится. В общем, насколько мешанина UTF-8 / UTF-16 будет эффективной, насколько не эффективной - могут сказать только тесты. На мой взгляд, для 95 % реальных приложений, UTF-8 более эффективно. Уменьшаем занимаемую память, данные компактнее, кэши и шины процессора работают эффективнее. Все упирается, насколько это криво реализуют. Сейчас encode / decode между кодовыми страницами - безумно криво сделано. Если хаки и оптимизации на уровне JVM не срабатывают - то и безумно тормознуто. Все тормоза при encode, decode строк исключительно из-за закрытости класса String, CharBuffer и бесмысленных копирований/переалоцирования памяти. Смотрел Apache NIO library, кусок кода отдачи результата клиенту - плакать можно, одно сплошное копирование буфферов туда-обратно, тупой encode через стандартные тормозные вызовы. (вроде CharBuffer и non-heap memory задумывали, что бы избавиться от лишних копирований, на практике - все прямо наоборот, поскольку работа по символьно через CharBuffer безумно тормозная /проверка индексов на выход за пределы массива, отсутвие JIT оптимизаций/, то все равно сначала копируют в heap, потом обрабатывают, потом обратно копируют) IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 12:44 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewЛибо дремучий дилетантизм, либо желание все как можно больше запутать. Т. к. эффект - ненадежность, медленность, сложность. Можно аргументы поподробнее а не просто слова и эмоции, тогда можно говорить дальше. Пока выглядет как "я xml не видел не работал но осуждаю". Eugene NewВот это вы пошутили. Судя по тому, какие открытия они начали совершать в 2017 году, даже элементарные вещи по перетряхиванию их архитектуры могут принести ощутимый эффект. Но они до этого еще не дошли. Видно, им надо еще 10 лет. Со строками mayton уже сообщил что итоге все скатывается к строкам ибо они больщая часть jvm так что даже разработчки idea ничего нового не придумали. Вот eclipse сильно медленнее. Если это элементарно подскажите им что поменять чтобы было можно работать, а то только идея пока. Eugene NewТем, что он создается явно и это хотя бы видно в коде. А в Java создается иллюзия удобства и прозрачности, которые Java на самом деле не обеспечивает. По сути нет отличий нет что в C создаем буффер внутри цикла что на java создаем буффер внутри метода. В java тоже явно, я даже описал как посмотреть, можно было удосужится и попробовать и потом говорить об илюзиях и удобстве. Eugene NewНужно это разжевывать? Речь идет о Java, в которой вообще нет статических переменных, в которой на каждый чих создаются объекты в куче. Вы не можете обеспечить того, что память не будет тратится. Вы можете только махнуть рукой - и так мол сойдет. Если я не прав, объясните, как вы будете гарантировать отсутствие выделений объектов в куче. А зачем гарантировать отсутствие выделений объектов на куче, нужно гарантировать (что у многих вполне себе неплохо получается). что за жизненный цикл приложения понадобится куча не более определенного размера. Чтото так сложно то. Зачем такие приложения нужны тоже приводили примеры там где требуется минимальный отклик, либо жизненный цикл запустил сделал заботу завершил прилоежние. Внезапно есть консольные приложения на java и некоторой части из них лучше вообще без выделить достаточно для работы дабы побыстрее, gc для таких только зря потерянное время и такты. Eugene NewА лучше вообще не запускать. Тогда точно не закончится. бинго. Eugene NewХотя ведь всегда можно сказать, что пользователь идиот и нищеброд, который не захотел лишних 20 гигов оперативки ставить - и поэтому программа падает не раз в день, а раз в час. Почему именно 20Гб а не 200Гб или не 100Мб? PS у самого 16Гб, тут кое у кого на форуме проскальзывало что 32 стоит на ноуте. llemingЗачем такие приложения нужны тоже приводили примеры там где требуется минимальный отклик. у этих финансистов 32 это не очем. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 12:48 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewРечь идет о Java, в которой вообще нет статических переменных Есть статические поля классов... Вы даже букварь не прочитали? Eugene Newв которой на каждый чих создаются объекты в куче. Вы не можете обеспечить того, что память не будет тратится. Есть способы уменьшить или исключить выделение памяти, применяются они как раз в приложениях, для которых Epsion GC будет приемлемым (ака Трейдерский софт например) Eugene NewЕсли я не прав, объясните, как вы будете гарантировать отсутствие выделений объектов в куче. Пулы объектов, использование Off-Heap memory, etc. Eugene NewА лучше вообще не запускать. Тогда точно не закончится. Хотя ведь всегда можно сказать, что пользователь идиот и нищеброд, который не захотел лишних 20 гигов оперативки ставить - и поэтому программа падает не раз в день, а раз в час. IMHO Не так и много случаев, когда нам нужно полностью избавиться от пауз для сборки мусора, и при этом иметь минимальный оверхед. В среднестастистических приложениях важно только обеспечить приемлемый уровень этих показателей. В таком случае само по себе выделение памяти проблемой не является, сборщик мусора скорее начнет тормозить из-за обилия "живых" (достижимых из корней ссылок) объектов, чем от создания объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 12:55 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewОгласили результат что наоборот стало сильно быстрее и меньше тратить памяти. А вы так и верите в их честность? Огласить можно что угодно. Особенно если оценивает свою же работу и употребляет вещества для изменения сознания. Надо хотя бы полные условия тестирования и методику тестов оглашать. Чтобы это было проверяемым со стороны. Обычно крупные проекты содержат как элемент CI цикл тестирования перформанса. Перед релизом его прогоняют и смотрят что все измерения попали в зелёный сектор. И никто здесь ничего оглашать не будет. Тоже мне...теорема Ферма. Просто релиз прошел успешно и все. Итеративная разработка. Увидели что хорошо и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 13:06 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonОбычно крупные проекты содержат как элемент CI цикл тестирования перформанса. Честно говоря, ни разу нормального нагрузочного тестирования ни где не видел. На одном проекте, был "перформанс-тест", но он скорее попадал не под категорию нагрузочное тестирование, а под тестирование обратной совместимости. Т.е. посмотреть, что при внисении изменений мы случайно вообще производительность не положили. Очень сложно бизнес метрики (кол-во юзеров, данных) заранее привести к синтетическому тесту. На практике, все вполне удовлетворяются грубым расчетом: раз при 1 G памяти мы спокойно обслуживаем 10 клиентов, то для 100 клиентов будет нужно 10 G памяти. Плюс минус лапоть, расчеты выполняют с запасом. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 13:21 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevmaytonОбычно крупные проекты содержат как элемент CI цикл тестирования перформанса. Честно говоря, ни разу нормального нагрузочного тестирования ни где не видел. На одном проекте, был "перформанс-тест", но он скорее попадал не под категорию нагрузочное тестирование, а под тестирование обратной совместимости. Т.е. посмотреть, что при внисении изменений мы случайно вообще производительность не положили. У нас тоже нечто подобное. Но все бизнес кейсы покрывает а только самые high frequency. Например исполнение биржевого ордера. И каждый релиз у нас есть метрики. Если просядут - сядем анализировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 13:27 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
И никто здесь ничего оглашать не будет Еще бы. Им куда удобнее изображать из себя гуру, говорить что все хорошо. "И так сожрут". Увидели что хорошо и все. Им то что плохо, зарплата идет, деятельность имитируется. Опять же колес заглотнуть - так вообще все хорошо становится. Раз уж даже за написание публичной документации под ними никто пинком под зад из компании не выгонит. После этого работника из Оракула я вижу, что возможно вообще все. даже разработчки idea ничего нового не придумали. Даже! Ну вы и сказали. Если разработчики Идеи действительно лучшие, то тем хуже для всего сообщества Явы. Есть статические поля классов.. Память под них выделяется где? нужно гарантировать (что у многих вполне себе неплохо получается). что за жизненный цикл приложения понадобится куча не более определенного размера. Огласите, пожалуйста, методику обеспечения таких гарантий. С формальным доказательством ее верности. Почему именно 20Гб а не 200Гб или не 100Мб? Как пример. Если у вас 20 и тормозит, всегда можно сказать, что надо 40. Судя по Вашим постам у Вас есть достаточно опыта в разработке и оптимизации сложных систем Для критики не обязательно делать самому. Достаточно сравнения с другими IDE. Например с теми, которые быстро работали под Pentium-1 и делали больше, чем современные IDE под Яву. А можно с тем, что имело многооконный интефейс, визуальный дебагер, справочную систему и занимало вместе с компилятором 150 килобайт, сравнить. В андроидной студии нет нормального визуального редактора интерфейса. Скажите, если он где то под другие платформы под Яву есть. Если нет, выходит что уровня 1995 года эти IDE еще не достигли. Текстовый редактор вряд ли является такой уж сложной системой, если, конечно, там каждый чих не усложняется намеренно. Я думаю, что тут еще дело в том, что линуксоиды мало вообще знакомы с графическим интерфейсом и визуальными компонентами. Поэтому им не с чем сравнивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 13:41 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene New, Eugene NewПамять под них выделяется где? Если переменная примитивного типа, то прямо в объекте класса, который живет в metaspace. Если не притивного, то в heap. В чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 13:48 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Как бы это поточнее выразится.. Методика "сошло и ладно, отвалится - переделаем" может подходить для некоторых заказных программ. Распространять ее на серийное ПО и тем более на системное или средства создания ПО как то не очень правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 13:54 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Lelouch, вот видите - в куче. Проблема в отсутствии критериев и доказательств того, что программа проработает определенное время. Раз уж вы их до сих пор не назвали, делаю вывод, что их не существует и что делают все наобум по принципу - "прокатило и ладно, а если что то будет - либо свалим на пользователя, либо в крайнем случае переделаем". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 13:57 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewКак бы это поточнее выразится.. Методика "сошло и ладно, отвалится - переделаем" может подходить для некоторых заказных программ. Распространять ее на серийное ПО и тем более на системное или средства создания ПО как то не очень правильно. 1) Чем серийное ПО отличается от заказного, кроме количества покупателей? Может вы имели в виду прикладное по? 2) java явно не популярна для разработки системного ПО 3) а что не так со средствами создания ПО? чем они отличаются от прочего прикладного софта? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 13:59 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewLelouch, вот видите - в куче. Проблема в отсутствии критериев и доказательств того, что программа проработает определенное время. Раз уж вы их до сих пор не назвали, делаю вывод, что их не существует и что делают все наобум по принципу - "прокатило и ладно, а если что то будет - либо свалим на пользователя, либо в крайнем случае переделаем". А для какого языка они есть? Приведите пример, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:00 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene New, и да, в чем проблема выделения памяти в куче? Это ж не какая-то особенность java. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:01 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewРаз идентификаторы содержат только латинские буквы и цифры с подчеркиванием (это ведь так для Java?)"Я прикрепил" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:08 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
lleming, Можно аргументы поподробнее а не просто слова и эмоции, тогда можно говорить дальше. Пока выглядет как "я xml не видел не работал но осуждаю". Я выше уже говорил об этом. Что касается XML самого по себе - то это иерархическая БД в текстовом виде, в которой доступ к любым данным будет происходит крайне медленно, т. к. для него нужен синтаксический разбор. Причем из-за синтаксиса закрытия тегов в XML полезной информации там обычно процентов 50 или меньше, остальное мусор. Синтаксический разбор - работа с текстом - значит задействуются строки. В Ява любое использование строк чревато утечками памяти (будем уже их так называть). Авторы ИДЕИ вообще анализировали ли во что им обходится использование xml, да еще такой кучи файлов? Судя по всему нет. Пытались ли они хоть как то оптимизировать их или там каждый раз, чтобы получить какое-то одно значение параметра настройки, дергается синтаксический разбор по новой? Судя по всему, так и делается. Альтернатива - плоские файлы. Пускай даже в текстовом виде с разделителями, с не с записями фиксированной длины, которые неудобно редактировать вручную. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:09 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewВ Ява любое использование строк чревато утечками памяти (будем уже их так называть). Нет не будем. В Java под утечками памяти понимается ситуация, при которой сборщик мусора считает объект "живым", а на самом деле он уже не нужен. Происходит исключительно из-за рукожопости программиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:13 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Lelouch, и да, в чем проблема выделения памяти в куче? в исчерпании свободного места и падении программы в любой момент, если вы эту память совсем не освобождаете. А для какого языка они есть? Ни для какого нет. Поэтому нельзя делать программы, рассчитанные на динамическое выделение памяти без ее освобождения и падение программы в результате этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:14 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Ему не нужно в школу, пусть и дальше пилит приложения на новой android studio и страдает. Кроме того, Вы таки даже не представляете, сколько еще опытов мы запланировали провести на этом участнике форума. Надеюсь, модераторы никогда его не забанят, это исключительно кошерный экземпляр носителя современного мышления. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:17 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewLelouch, и да, в чем проблема выделения памяти в куче? в исчерпании свободного места и падении программы в любой момент, если вы эту память совсем не освобождаете. А для какого языка они есть? Ни для какого нет. Поэтому нельзя делать программы, рассчитанные на динамическое выделение памяти без ее освобождения и падение программы в результате этого. 1) Приложения, которые в java совсем не освобождают память - огромная редкость. И люди, которые их пишут, делают это осознано и с применением техник, которые уменьшают или исключают выделение памяти. 2) FYI Если что , есть целый язык, сделаный с философией Let it crash, называется erlang . ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:19 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene Newlleming, Можно аргументы поподробнее а не просто слова и эмоции, тогда можно говорить дальше. Пока выглядет как "я xml не видел не работал но осуждаю". Я выше уже говорил об этом. Что касается XML самого по себе - то это иерархическая БД в текстовом виде, в которой доступ к любым данным будет происходит крайне медленно, т. к. для него нужен синтаксический разбор. Причем из-за синтаксиса закрытия тегов в XML полезной информации там обычно процентов 50 или меньше, остальное мусор. Синтаксический разбор - работа с текстом - значит задействуются строки. В Ява любое использование строк чревато утечками памяти (будем уже их так называть). Авторы ИДЕИ вообще анализировали ли во что им обходится использование xml, да еще такой кучи файлов? Судя по всему нет. Пытались ли они хоть как то оптимизировать их или там каждый раз, чтобы получить какое-то одно значение параметра настройки, дергается синтаксический разбор по новой? Судя по всему, так и делается. Альтернатива - плоские файлы. Пускай даже в текстовом виде с разделителями, с не с записями фиксированной длины, которые неудобно редактировать вручную. Тут все легко разобрать по пунктам. Везде есть свой трейд офф. Избыточность xml да известный недостаток. Из за нее у xml жирный плюс самодокументированость, поэтому навскидку там данных процентов 50 или меньше, еще 30-40% это информация о структуре данных. В случае не xml вы это описание во внешнем файле прячете. Если описания нет то файл бессмыслица в отличие от xml. В Ява любое использование строк чревато утечками памяти неверная фраза вот правильная любая работа с паматью внезависимости от языка программирония или IDE чревата утечками памяти. Авторы idea думаю они знакомы с концепцией DOM, а вы судя по всему нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:22 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, "Я прикрепил" Я вашу Яву не знаю в подробностях и не скрываю это. Раз у них можно идентификаторы на других языках - значит они идиоты. При нулевой пользе создали себе этим массу проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 14:27 |
|
|
start [/forum/topic.php?fid=59&msg=39706117&tid=2121729]: |
0ms |
get settings: |
8ms |
get forum list: |
35ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
86ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 324ms |
total: | 535ms |
0 / 0 |