… и кстати auto vacuum опциональный и его можно не включать. В этом случае, проверка на expiry и удаление данных будет происходить только при доступе к ним. И, как-раз в этом случае, expiry_cache будет работать в один поток :)
Кстати, мой expiry_cache поддерживает разное время хранения для данных. Да и разные типы в одном контейнере можно держать при помощи std::any или std::variant. Хотя, Вам решать, что и как использовать :)
Манеры… Всем что-то и как-то не нравиться в этой жизни. Я считаю, главное в хороших манерах, подумать что и как ты говоришь. Взаимоуважение, я считаю, это необходимое качество для нормального общения. Но, по большей части, Ваши слова в комментариях имеют унизительный характер в мой адрес. Может Вы и отличный программист, а вот как человек в общении как-то не очень, извините.
1. Я понял Вас. Спасибо, поправлю. Но, тем не менее, я не считаю эти «аллокации» слишком большой проблемой. Просто, простор для оптимизации ;) Хотя, Ваше замечание считаю было по делу )
2. Ваш код, с последними моими изменениями в коде relinx_object (где я удалил конструктор копирования), выводит результат 15.
Кстати, GCC с флагами -Wall -Wextra -Wpedantic ругался только 'warning: unused parameter 'v' [-Wunused-parameter]' с сопутствующей кучей воды. Я убрал неиспользуемые параметры и вуаля:
— Build: Release-GCC in relinx (compiler: GNU GCC Compiler)---------------
x86_64-w64-mingw32-g++.exe -Wall -std=c++14 -fexceptions -O3 -pedantic -Wextra -Wall -c D:\Projects\relinx\main.cpp -o obj\Release\main.o
x86_64-w64-mingw32-g++.exe -o bin\Release\relinx.exe obj\Release\main.o -s
Output file is bin\Release\relinx.exe with size 385.00 KB
Process terminated with status 0 (0 minute(s), 12 second(s))
0 error(s), 0 warning(s) (0 minute(s), 12 second(s))
1. Укажите, пожалуйста, где происходят внезапные аллокации, чтобы, если это верно, я мог поправить код.
2. Что значит, копирование класса relinx_object? Конструктор копирования или что?
3. Я проверю на предмет forward. Мог пропустить где-то.
4. И что?
У clang-а вообще никаких претензий нет:
clang++.exe -Wall -std=c++14 -fexceptions -O3 -Wnon-virtual-dtor -Wbind-to-temporary-copy -Wambiguous-member-template -pedantic-errors -pedantic -Wall -target x86_64-w64-mingw32 -c D:\Projects\relinx\main.cpp -o obj\Release\main.o
clang++.exe -o bin\Release\relinx.exe obj\Release\main.o -s -target x86_64-w64-mingw32
Output file is bin\Release\relinx.exe with size 464.00 KB
Process terminated with status 0 (0 minute(s), 18 second(s))
0 error(s), 0 warning(s) (0 minute(s), 18 second(s))
Ну можно использовать и void* и union :)
Как говориться, на вкус и цвет :)
… и кстати auto vacuum опциональный и его можно не включать. В этом случае, проверка на expiry и удаление данных будет происходить только при доступе к ним. И, как-раз в этом случае, expiry_cache будет работать в один поток :)
Кстати, мой expiry_cache поддерживает разное время хранения для данных. Да и разные типы в одном контейнере можно держать при помощи std::any или std::variant. Хотя, Вам решать, что и как использовать :)
Ну ничего. Может со временем появятся и для Вас интересные решения в nstd.
А можете дать ссылку на более гибкий шедулер?
Обновил Relinx
Обновил Relinx.
Я, скорее всего, изменю архитектуру...
Спасибо большое за дельные советы и замечания. Попытаюсь в ближайшее время поправить.
Манеры… Всем что-то и как-то не нравиться в этой жизни. Я считаю, главное в хороших манерах, подумать что и как ты говоришь. Взаимоуважение, я считаю, это необходимое качество для нормального общения. Но, по большей части, Ваши слова в комментариях имеют унизительный характер в мой адрес. Может Вы и отличный программист, а вот как человек в общении как-то не очень, извините.
Да, Вы правы насчёт ссылок. Поправил. Данные переносятся теперь в новые экземпляры relinx_object.
Запрет копирования — это не костыль, а by design.
Простите, но Ваша манера тыкать носом без объяснения причин выглядит не по-людски, я бы сказал даже агрессивно.
Ну так и поясните почему. Или я недостоин? :)
2. Ваш код, с последними моими изменениями в коде relinx_object (где я удалил конструктор копирования), выводит результат 15.
— Build: Release-GCC in relinx (compiler: GNU GCC Compiler)---------------
x86_64-w64-mingw32-g++.exe -Wall -std=c++14 -fexceptions -O3 -pedantic -Wextra -Wall -c D:\Projects\relinx\main.cpp -o obj\Release\main.o
x86_64-w64-mingw32-g++.exe -o bin\Release\relinx.exe obj\Release\main.o -s
Output file is bin\Release\relinx.exe with size 385.00 KB
Process terminated with status 0 (0 minute(s), 12 second(s))
0 error(s), 0 warning(s) (0 minute(s), 12 second(s))
— Закомител код.
2. Что значит, копирование класса relinx_object? Конструктор копирования или что?
3. Я проверю на предмет forward. Мог пропустить где-то.
4. И что?
У clang-а вообще никаких претензий нет:
clang++.exe -Wall -std=c++14 -fexceptions -O3 -Wnon-virtual-dtor -Wbind-to-temporary-copy -Wambiguous-member-template -pedantic-errors -pedantic -Wall -target x86_64-w64-mingw32 -c D:\Projects\relinx\main.cpp -o obj\Release\main.o
clang++.exe -o bin\Release\relinx.exe obj\Release\main.o -s -target x86_64-w64-mingw32
Output file is bin\Release\relinx.exe with size 464.00 KB
Process terminated with status 0 (0 minute(s), 18 second(s))
0 error(s), 0 warning(s) (0 minute(s), 18 second(s))
Вариант с Ranges я рассмотрю. Спасибо.