The code of resizable hash table has been updated so that it doesn't need to compute the hash twice since 2019. Here are some related commits: 2ea492bbab9d ("datatruct/hash: Don't recompute hashes in hashtab_add()") 2a7f20d234e7 ("datastruct/hash: Don't recompute hashes in hashtab_del()") ... So, the patch removes the outdated content. Signed-off-by: Alan Huang <mmpgouride@xxxxxxxxx> Reviewed-by: Akira Yokosawa <akiyks@xxxxxxxxx> --- datastruct/datastruct.tex | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/datastruct/datastruct.tex b/datastruct/datastruct.tex index 8c2bfc16..0242ccc7 100644 --- a/datastruct/datastruct.tex +++ b/datastruct/datastruct.tex @@ -2017,32 +2017,10 @@ which could allow the compiler to inline the resulting fixed functions, eliminating not only the overhead of the call instruction, but the argument marshalling as well. -In addition, the resizable hash table is designed to fit an API -that segregates bucket selection from concurrency control. -Although this allows a single torture test to exercise all the hash-table -implementations in this chapter, it also means that many operations -must compute the hash and interact with possible resize operations twice -rather than just once. -In a performance-conscious environment, the \co{hashtab_lock_mod()} -function would also return a reference to the bucket selected, eliminating -the subsequent call to \co{ht_get_bucket()}. - -\QuickQuizSeries{% -\QuickQuizB{ - Couldn't the \path{hashtorture.h} code be modified to accommodate - a version of \co{hashtab_lock_mod()} that subsumes the - \co{ht_get_bucket()} functionality? -}\QuickQuizAnswerB{ - It probably could, and doing so would benefit all of the - per-bucket-locked hash tables presented in this chapter. - Making this modification is left as an exercise for the - reader. -}\QuickQuizEndB -% -\QuickQuizE{ +\QuickQuiz{ How much do these specializations really save? Are they really worth it? -}\QuickQuizAnswerE{ +}\QuickQuizAnswer{ The answer to the first question is left as an exercise to the reader. Try specializing the resizable hash table and see how much @@ -2051,8 +2029,7 @@ the subsequent call to \co{ht_get_bucket()}. instead be answered with respect to a specific use case. Some use cases are extremely sensitive to performance and scalability, while others are less so. -}\QuickQuizEndE -} +}\QuickQuizEnd All that aside, one of the great benefits of modern hardware compared to that available when I first started learning to program back in -- 2.34.1