I'm aware of Artem Krylysov's idea for string interning published on
https://artem.krylysov.com/blog/2018/12/12/string-interning-in-go/

If I understand it correctly, each string is stored twice in a map, once as
a key and once as a value. That means that words that only appear once in
his example of string interning the words in the novel 1984 are 100% 
inefficient
in terms of storage. Words that appear twice are neutral. The advantage of 
his
approach only appears for words that appear three or more times.

I'm wondering if there's a map-like data structure that would store a string
as the key, and the address of the key as the value. I'm aware that a 
standard
Go map can't be used for this because its components might be moved around
while a program is running so taking the address of the key would be 
dangerous,
which is why it isn't allowed.

This came up because I profiled a run of an app I'm working on that
processed 12518 strings, of which 9810 appeared 2 or fewer times. Krylysov's
approach would only be marginally useful for this app.

The data structure I'm looking for would always be at least neutral, and 
would start
showing a benefit when a word appears twice.

Does anybody know of such a data structure?

Cordially,
Jon Forrest

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/36684584-11eb-4bc0-a436-4906d523c8ban%40googlegroups.com.

Reply via email to