tree 63ac2e0f7c64e09f449e83031513d0fb7c431e0a
parent 44208030b391907a5ec5c5658470bdb6e6169073
author Benoît Masson <benoitmasson@users.noreply.github.com> 1476437085 +0200
committer Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> 1476437085 +0200

Increase performance of nested keys search

* Fixed: insensitiviseMaps and tests

All keys (even nested ones) are now lower-cased recursively.

On the way, map[interface{}]interface{} are cast to map[string]interface{}

* Changed: simplified find() fast path and increase performance

Removed searchMapForKey(), fast path directly integrated into searchMap() and
searchMapWithPathPrefixes()
=> more generic (searchMapForKey() wasn't called everywhere it should have)

At the same time, significantly speed up searchMap() and searchMapWithPathPrefixes(),
which are still used for nested keys: the assumption that map keys are all
lower-cased allows to perform
    val = m[key]
instead of
    for k, v := range m {
      if strings.ToLower(k) == strings.ToLower(key) {
        val = v
      }
    }
=> i.e., directly access the map instead of enumerate the keys
