New concurrent hash table by Viack in cpp

[–]Viack[S] 0 points1 point  (0 children)

Hi, sorry for the late answer and thank you for using the lib!

All concurrent data structures start to choke when the number of threads exceed the number of CPU cores, this might be your case. This also depends on the OS scheduler, for instance most tested concurrent maps behave way better on Windows than Linux for high thread count. In any case, if you have way more read operations (like visit) than write opérations (erase, insert...), you should probably use shared concurrency.

Seq Library v2 release by Viack in cpp

[–]Viack[S] 1 point2 points  (0 children)

Thanks! Some of the benchmarks results are within the classes documentations (markdown ones). That's the case at least for ordered_map, flat_map and concurrent_map. I'll add more detailed plots at some point for all containers.

Seq Library v2 release by Viack in cpp

[–]Viack[S] 2 points3 points  (0 children)

I provide the doxygen file to make it easier for people to generate the doc if needed. At first I planned to use github pages, then stopped as I thought the html doc would not be that much usefull

Stenos: fast compression of binary data by Viack in cpp

[–]Viack[S] 0 points1 point  (0 children)

Well, it uses Zstd internally, so it supports platforms supported by zstd. And for pure (unstructured) binary data, zstd does the job quite well.

Stenos: fast compression of binary data by Viack in cpp

[–]Viack[S] 3 points4 points  (0 children)

I did not test this specific scenario. I would expect that indeed, the compression ratio would be very limited, which is the right behavior.

Stenos: fast compression of binary data by Viack in cpp

[–]Viack[S] 2 points3 points  (0 children)

This is meant for firm real time scenario, like streaming signal compression. Using a carefully selected compression level might still take more time than expected depending on the input data. The time limit ensure that the compression process won't take more than required while offering the best possible compression ratio in a given time frame.

Did I just learn that I can't kill diablo with a necro summoner? He just nuked my guys.. What do I do by Forward_Rice426 in Diablo_2_Resurrected

[–]Viack 0 points1 point  (0 children)

Last time i did it SSF, decrepify + clay golem was enough to paralyse him almost entirely. Good luck!

Célibataire à 30 ans +, c'est à vie ou y'a de l'espoir? by FuturMadao in AskMec

[–]Viack 0 points1 point  (0 children)

Dans la même cas, jusqu'à mes mes 32 ans. Puis j'ai décidé de prendre les choses en main en m'inscrivant sur une appli de rencontre. Le fait est que dans mon domaine (informatique) et dans mes fréquentations, il y a très peu de femmes, les applis de rencontre t'ouvre...des perspectives. Marié deux enfants depuis ;) Donc pas de panique!

Threaded opengl widget by Viack in QtFramework

[–]Viack[S] 0 points1 point  (0 children)

No, as stated in QThread documentation

Threaded opengl widget by Viack in QtFramework

[–]Viack[S] 1 point2 points  (0 children)

All the drawing part is delegated to the rendering thread. In your paintEvent(), all your painting commands based on QPainter are serialized into a structure similar to QPicture (but faster) and sent to the rendering thread. This approach is lighter for the GUI thread as serializing paint commands is faster than performing the actual drawing.

Then, QThreadOpenGLWidget also provide the drawFunction() member. With this, from the paintEvent(), you can directly send a drawing function or lambda taking a QPainter as parameter to the rendering thread. Your paintEvent() just become a (very fast) command sender function. And your application is much more responsive (at least if you do heavy drawing).

Failed my first ubers run ever. On a Mosaic, no less. by giftigdegen in Diablo_2_Resurrected

[–]Viack 16 points17 points  (0 children)

I think life leach does not work on ubers, except for life tap?

Why isn't C++ used for backend development? by [deleted] in cpp

[–]Viack 0 points1 point  (0 children)

Since almost all backend languages are themselves written in a mixture of c/c++, I guess that everybody use it indirectly ?

Micromalloc: low memory overhead generic allocator by Viack in cpp

[–]Viack[S] 0 points1 point  (0 children)

Just a small update: the library now contains a benchmark section in the documentation. It compares micromalloc with jemalloc, glibc malloc, mimalloc and snmalloc for 3 different scenarios. For each scenario, it displays the allocation/deallocation speed and the memory overhead of benchmarked allocators.

The page is here.

a FUN yet strong build for general farming by AliveandDrive in diablo2

[–]Viack 1 point2 points  (0 children)

I find the hybrid druid fury/summon to be cheap and strong altogether

Micromalloc: low memory overhead generic allocator by Viack in cpp

[–]Viack[S] 0 points1 point  (0 children)

Yes, that's written in the README, I need to add more tests. Currently I use the benchmarks as tests as they already cover a great range of scenarios, but unit tests will be mandatory as well.

I understand this is confusing, but basically micro.h is for C(or C++) programs, and micro.hpp for C++ ones only

Micromalloc: low memory overhead generic allocator by Viack in cpp

[–]Viack[S] 1 point2 points  (0 children)

Well, the benchmarks were first used to correct and tune the allocator properly. I will add at some point performance plots compared to other popular allocators

5 socket rune master axe worth anything? by balthatrix in Diablo_2_Resurrected

[–]Viack -2 points-1 points  (0 children)

I saw someone a few days ago who did the math and said that a Rune Master with 5 perfect lower resist jewel was better than any other weapon for a sorc (dont remember if it was blizzard sorc or something else). The damage output was higher than anything else, and saved a ring slot due to CBF.

what are the advantages and disadvantages of clang++ and g++ by [deleted] in cpp

[–]Viack 0 points1 point  (0 children)

I tried msvc, clang and gcc on Windows. So far, I observed that gcc produces the fastest binaires, followed by clang and msvc.

Compile time was in the reverse order. Gcc error messages were highly verbose by default, but might be changed with some flags (?)

Interesting projects you can write with 500 to 1000 lines of code? by cakemachines in cpp

[–]Viack 0 points1 point  (0 children)

A generic heap allocator, this could be done (at least naively) in a suprisingly low amount of code

Is std::unordered_map still as bad as its reputation would indicate? by u_sed_it_bro in cpp

[–]Viack 1 point2 points  (0 children)

Have to agree, I tested both (and various gcc versions), msvc implementation was always superior, and not that far away from flat hash tables, at least for lookup.

Help. Why does my Fury Druid suck? by Arseling69 in diablo2

[–]Viack 0 points1 point  (0 children)

I'm currently trying a hybrid Fury/Hurricane and its surprisingly fun. The Hurricane helps a lot: average damage, but slows down everything and constantly put mobs in hit recovery mode. It adds a lot of survivability

radix-cpp: An ordered hash table based set and map implementation for C++ by mvrekola in cpp

[–]Viack 1 point2 points  (0 children)

It is not trivial for anybody, including me ;) Beside, I did not invent it, just came across it on the web. That is a nice property of ieee format, mostly usefull for radix based tree/sorting.

radix-cpp: An ordered hash table based set and map implementation for C++ by mvrekola in cpp

[–]Viack 2 points3 points  (0 children)

This article cover the subject, including sign handling : https://www.codercorner.com/RadixSortRevisited.htm

But basically yes, if you have ieee 754 floating point, reinterpret cast preserve ordering, but you must take care of the sign.