- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
// почему это гавно не будет работать?
auto size = buffer.size() - 1;
auto *ptr = new byte[size];
for (auto i = size; i >= 0; i--)
{
ptr[i] = 0;
}
// a это гавно будет работать :)
auto size = buffer.size() - 1;
auto *ptr = new byte[size];
for (int i = size; i >= 0; i--)
{
ptr[i] = 0;
}
Soul_re@ver 17.03.2021 21:04 # +2
А так да, камешек в огород любителей беззнаковых значений.
Весело будет, если size() вернёт когда-нибудь 0
guest6 17.03.2021 21:24 # 0
вроде, туда ходить можно, а разыменовывать нельзя, не?
или это тока для указателей
впрочем, лунь туда один хуй пишет
bormand 17.03.2021 21:31 # +1
Petro-san 18.03.2021 21:00 # +1
MAKAKA 18.03.2021 21:15 # 0
bormand 17.03.2021 21:11 # +1
Массив маловат.
guest6 17.03.2021 21:12 # 0
< size = -1
> new byte[ -1];
< говно
bormand 17.03.2021 21:14 # 0
MAKAKA 17.03.2021 21:18 # 0
bormand 17.03.2021 21:19 # 0
guest6 17.03.2021 21:21 # 0
вообще, ауты нужны, чтобы параметризованные итераторы не выписывать. А для простых типов я бы его не
bormand 17.03.2021 21:23 # 0
Soul_re@ver 17.03.2021 21:36 # 0
template<typename T> example(T t) { T::value_type x = t[i]; } → example(T t) { auto x = t[i]; }
bormand 17.03.2021 21:39 # 0
Soul_re@ver 17.03.2021 21:41 # 0
bormand 17.03.2021 21:44 # 0
ASD_77 17.03.2021 21:53 # 0
auto example(auto t) { decltype(t[i]) x = t[i]; }
Fike 17.03.2021 21:42 # +2
guest6 17.03.2021 21:44 # 0
Fike 17.03.2021 21:45 # 0
ASD_77 17.03.2021 21:43 # 0
guest6 17.03.2021 21:45 # 0
unsigned int i = 0;
i--;
равен ли он теперь MAX_INT?
bormand 17.03.2021 21:47 # 0
guest6 17.03.2021 21:50 # 0
тогда он прав
bormand 17.03.2021 21:55 # 0
guest6 17.03.2021 22:01 # 0
6apry3uHckuu_nemyx 19.03.2021 04:59 # 0
So the minimum maximum value that size_t must be able to hold is 65535, which is 16 bits of precision, and size_t is only defined to be an unknown unsigned integer type.
Какой анскилл )))
bormand 17.03.2021 21:13 # 0
З.Ы. Вроде ещё что-то типа такого можно, но я не уверен:
MAKAKA 17.03.2021 21:17 # 0
bormand 17.03.2021 21:23 # 0
bormand 17.03.2021 21:34 # 0
MAKAKA 17.03.2021 21:36 # 0
bormand 17.03.2021 21:42 # +3
Борманд: да хуй знает, не юзал ни разу
guest6 17.03.2021 21:47 # +1
--А разве не RC, как в ObjC?
bormand 17.03.2021 21:48 # +3
-- нет, это у вас в джаве ручное управление ресурсами
guest6 17.03.2021 21:57 # +3
https://stackoverflow.com/a/8191493
Fike 17.03.2021 22:02 # +1
-- У вас вообще его нет
самое печальное с жабой и другими мейнстримовыми языками без управления памятью - что сервисы для перемалывания больших данных, запросов, etc. пишут именно на них, а вот ограничить сверху расход памяти конкретным запросом/джобой невозможно, и потому какие circuit breaker'ы не ставь, всё равно рано или поздно не успеешь отловить OOM,
MAKAKA 17.03.2021 22:05 # 0
Fike 17.03.2021 22:08 # 0
Именно поэтому у меня есть очередная NIH-мечта - выкинуть нахуй Lucene и написать всё по-человечески на сишке.
bormand 17.03.2021 22:16 # +2
По-царски.
bormand 18.03.2021 00:11 # 0
Хм, а CLucene это не то?
Fike 17.03.2021 22:19 # +2
Тут конечно можно сказать: зачем форкаться, если можно создать новый процесс? А новый процесс это инициализировать новую вм ахаххаха опять весь пирформанс в пизду.
guest6 17.03.2021 22:23 # 0
bormand 17.03.2021 22:25 # +1
MAKAKA 17.03.2021 22:27 # 0
Fike 17.03.2021 22:52 # 0
Fike 17.03.2021 22:51 # 0
bormand 17.03.2021 22:59 # 0
Ну если хорошенько прогреть, чтобы всё проджитилось, gc несколько раз отработал и убрал всю статику в олдфажное поколение, вроде должно норм получиться.
Форк насрёт в быстрое поколение и сдохнет, а жирный общий контекст останется расшаренным.
Fike 17.03.2021 23:10 # 0
guest6 17.03.2021 23:00 # 0
Fike 17.03.2021 23:11 # 0
guest6 17.03.2021 23:15 # 0
Кстати, как ты это сделаешь в винде?
Fike 17.03.2021 23:25 # 0
хз, я просто не знаю достаточно про винду, только про то что ты имеешь в виду что там вместо fork-exec StartProcess, который ничего не шарит
guest6 17.03.2021 23:28 # 0
В никсах ты делаешь fork, получая копию себя (благодаря корове очень дешевую), а потом ты делаешь exec поверх если хочешь.
В пинде ты явно запускаешь новый процесс.
Конечно, если ты перезапускаешь то, что уже есть в памяти, то винда может постараться переиспользовать странички c кодом, но я не ебу что там с джитом будет.
А вместо fork там потоки.
зы: Борманд наверняка знает
bormand 17.03.2021 23:37 # 0
Заново джитить всё будет.
Цыгвин как-то пытается "форкнуть" процесс на венде (через явное шаред мемори?) но там куча проблем с этим, это вообще не продакшен-реди.
guest6 18.03.2021 01:00 # 0
Fike 17.03.2021 23:15 # 0
https://github.com/elastic/elasticsearch/issues/70522
guest6 17.03.2021 23:26 # 0
нафоркай себе сколько-то долгоживущих процессов, создай direct buferы в обычной памяти заранее заданного размера, и не вылазть за них
placement new в жову не завезли, так что придется тебе вместо объектов массивами оперировать, как Царь
и не будет никакова GC
Fike 17.03.2021 23:29 # 0
guest6 17.03.2021 23:31 # 0
не пробовал его?
MAKAKA 17.03.2021 23:34 # +1
Зачем бороться с тем, что тебе не подходит?
Выкини, да возьми другое.
Управляемая куча говна не лучший инструмент для высокоперформансного хайлоада бигдаты
bormand 17.03.2021 23:41 # +1
Именно поэтому я за кресты. Там говно на любой вкус есть. Даже gc и jit при желании.
Комплайт-тайм рефлексию и кодогенерецию вот дождаться осталось...
Fike 18.03.2021 01:31 # 0
> Выкини, да возьми другое.
тут мы возвращаемся к исходному сообщению
> самое печальное с жабой и другими мейнстримовыми языками без управления памятью - что сервисы для перемалывания больших данных, запросов, etc. пишут именно на них
нету другого эластика и другого люсина
guest6 18.03.2021 02:10 # 0
Fike 18.03.2021 03:57 # 0
> Partitioning is done manually.
дальше уже и читать смысла особо нет
MAKAKA 18.03.2021 19:17 # 0
на крестах
bootcamp_dropout 18.03.2021 19:19 # 0
bormand 18.03.2021 09:09 # 0
CLucene протух, получается? Какая-то уж больно древняя версия у него по сравнению с настоящим.
Fike 18.03.2021 22:23 # +1
Desktop 17.03.2021 23:36 # +1
bormand 17.03.2021 23:40 # 0
Desktop 17.03.2021 23:42 # 0
bormand 17.03.2021 23:42 # 0
bormand 17.03.2021 23:53 # +2
Он сам: https://govnokod.ru/27121#comment596876
bormand 17.03.2021 22:21 # +1
Т.е. "PHP" всё-таки не говно, раз его основной принцип перенесли в жабу?
MAKAKA 17.03.2021 22:35 # +1
https://www.codejava.net/java-ee/jstl/jstl-sql-tag-query
Soul_re@ver 17.03.2021 21:49 # 0
Desktop 17.03.2021 21:51 # 0
Fike 17.03.2021 21:59 # 0
bormand 17.03.2021 22:02 # +2
CHayT 17.03.2021 23:52 # 0
bormand 18.03.2021 00:16 # 0
CHayT 18.03.2021 00:22 # +2
Не нужен, да.
ASD_77 17.03.2021 21:44 # 0
bormand 18.03.2021 09:11 # +2
warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
TarasB 18.03.2021 22:03 # 0
for (size_t i = 0; i < pidor_v.size()-1; ++i) { // итерируемся до предпоследнего
bormand 18.03.2021 22:10 # 0
MAKAKA 18.03.2021 23:14 # 0
bormand 18.03.2021 23:19 # 0
Хотя со знаковым числом этой фигни бы не было, конечно.
MAKAKA 18.03.2021 23:21 # 0
со знаковым я бы получил -1, а 0 не меньше -1, и все кончилось бы хорошо, не?
6apry3uHckuu_nemyx 19.03.2021 05:00 # 0
JloJle4Ka 19.03.2021 05:04 # 0
6apry3uHckuu_nemyx 19.03.2021 05:07 # +1
Desktop 19.03.2021 00:59 # 0
Кампутир сайенс положил семантику на лопатки
JloJle4Ka 19.03.2021 02:42 # +1
for (size_t i = 2; i < pidor_v.size(); ++i) {
. . . . auto j = i - 2;
Ладно, побежал дальше писать работающие программы на unsigned вычислениях, а вы продолжайте хуесосить ЛУЧШЕЕ, что когда либо было создано в программировании ;)
guest6 29.06.2022 09:30 # 0
guest6 17.03.2021 23:10 # 0
Petro-san 18.03.2021 12:55 # +1
JloJle4Ka 18.03.2021 10:48 # +1
bormand 18.03.2021 11:16 # 0
TarasB 18.03.2021 22:02 # +4
6apry3uHckuu_nemyx 19.03.2021 07:39 # 0
6apry3uHckuu_nemyx 19.03.2021 07:46 # 0
ASD_77 20.03.2021 21:03 # 0
booratihno 20.03.2021 21:09 # 0
if (size - 1 > 0)..
нужно было делать как с указателями: чтоб вылазить за пределы ( в отрицательные значения ) было можно, а обращаться по ним нельзя
bormand 20.03.2021 21:24 # 0
Кстати тут даже ворнинга не будет.
guest6 20.03.2021 21:31 # 0
Вдруг мои вкусы специфичны, и я именно это и хотел написать?
bormand 20.03.2021 21:31 # 0
guest6 20.03.2021 21:34 # 0
а если бы я сказал size = -1, то что бы случилось? unsigned превратился бы в signed?
bormand 20.03.2021 21:37 # 0
Наоборот же. Будет 0xFFFFFFFFu - 4u > 0u.
guest6 20.03.2021 21:40 # 0
помню тока, что операторы любят, чтобы операнды были одинакового типа)
вообще имплиситный каст есть говно, и лучше бы его не было
bormand 20.03.2021 21:44 # +1
Сначала мелочь меньше инта кастится в int. Затем, если получились типы разного размера, то кастится в больший из них. А если одного -- то в беззнаковый.
guest6 20.03.2021 21:50 # 0
bormand 20.03.2021 22:21 # +2
guest6 20.03.2021 22:30 # 0
думаю, питухи расширятся до обычного инта, до знакового.. но нужно смотреть стандарт
блядь
там же создасца временная переменная и будет наоборот: вызовеца unsgined, а мог бы и вообще какой-нить float?
bormand 20.03.2021 22:39 # 0
guest6 20.03.2021 22:40 # 0
Перегружать можно только то, что друг а друга не расширяется неявно
Petro-san 21.03.2021 13:54 # 0
guest6 20.03.2021 23:55 # 0
https://i.kym-cdn.com/entries/icons/original/000/000/063/Rage.jpg
guest6 20.03.2021 23:59 # 0
bormand 20.03.2021 21:38 # +1
Petro-san 20.03.2021 21:47 # 0
guest6 29.06.2022 09:30 # 0
Steve_Brown 29.06.2022 09:56 # 0
Ну и отсутствие явно неправильного значения -1, которое можно использовать как пустой результат (например, при поиске) - скорее, недостаток.
guest6 29.06.2022 14:31 # 0
И однажды он написал написал код
а потом код стал тормозить, и он решил переписать его кресты. Угдай, что случилось?
Steve_Brown 29.06.2022 15:31 # 0
С другой стороны, а вдруг нам действительно нужен массив ровно в 64к. Язык должен это поддерживать, чай не скриптушня. Для каких-нибудь std::vector можно было и ограничить размер: хотите странных размеров, создавайте массив ручками, обойдетесь без классов. В Qt, например, так и сделали, для прикладнухи этого достаточно. Но sizeof(char[64*1024]) же должен что-то возвращать. А, значит, конструкция типа int i = 16; if (i < sizeof(SKurochka) {...} уже будет потенциально опасной, даже если у меня в программе больших структур вообще нет, чего ругаесся, насяльника. В общем, сложно сказать.
guest6 29.06.2022 15:53 # 0
Ну вот жабаеб может состнуть (и шарпей наверное тоже) даже на x64 системе.
Однако будем честны: всем хватит 2^32 байт. Если не хватит, то нужно делать анонимный ммапинг файла, а не пхать массив.
Soul_re@ver 29.06.2022 16:25 # 0
Нихватает. Всего 4 ГБ.
> Если не хватит, то нужно делать анонимный ммапинг файла, а не пхать массив.
Тут проблема не в массиве, а в адресации.
Но я не припомню ос, которая разрешила бы замапить кусок памяти размером в 2^64.
guest6 29.06.2022 14:37 # 0
для пустого массива будет бугурт
Steve_Brown 29.06.2022 15:34 # 0
guest6 29.06.2022 16:46 # 0
guest6 21.03.2021 00:40 # +2
А всё потому что это был чистый концентрированный на сто процентов свободный интернет.
Нынче такой интернет не делают, всё разбавлено цензурой, вот и продают за бесценок.
guest6 29.06.2022 14:35 # 0
В моем детстве Интернет по карточкам в метро продавался. Бывало купишь свежую карточку, и пока домой со школы бежишь -- всю и съешь...