[patch] KConfig: Efficient iterators

JarosÅ‚aw Staniek <[email protected]> Mon, 21 Apr 2008 19:44:28 +0200
Newsgroups gmane.comp.kde.devel.core,gmane.comp.kde.devel.optimize
Organization OpenOffice Polska
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------050807020208050100010408
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit


For review
I have encountered that every call took more than 1 second and ~100% of CPU on 
my box, in debugging session for KMail (win32/msvc). Strange.

Use KEntryMap::ConstIterator instead of foreach with entryMap.keys().

Infinite loops may take just one second on your box too, _but_ better to 
optimize them :)


-- 
regards / pozdrawiam, Jaroslaw Staniek
  Sponsored by OpenOffice Polska (http://www.openoffice.com.pl/en) to work on
  Kexi & KOffice (http://www.kexi.pl/en, http://www.koffice.org/kexi)
  KDE Libraries for MS Windows (http://windows.kde.org)

--------------050807020208050100010408
Content-Type: text/plain;
 name="kconfig-efficient-iterators.patch"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="kconfig-efficient-iterators.patch"

SW5kZXg6IGtkZWNvcmUvY29uZmlnL2tjb25maWcuY3BwDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
a2RlY29yZS9jb25maWcva2NvbmZpZy5jcHAJKHdlcnNqYSA3OTkzMzApDQorKysga2RlY29y
ZS9jb25maWcva2NvbmZpZy5jcHAJKGtvcGlhIHJvYm9jemEpDQpAQCAtMTIxLDggKzEyMSw4
IEBADQogICAgIGNvbnN0IGludCBsZW4gPSBzb3VyY2UubGVuZ3RoKCk7CiAgICAgY29uc3Qg
Ym9vbCBzYW1lTmFtZSA9IChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpOwogCi0gICAgZm9yZWFj
aCAoY29uc3QgS0VudHJ5S2V5JiBrZXksIGVudHJ5TWFwLmtleXMoKSkgewotICAgICAgICBj
b25zdCBRQnl0ZUFycmF5JiBncm91cCA9IGtleS5tR3JvdXA7CisgICAgZm9yIChLRW50cnlN
YXA6OkNvbnN0SXRlcmF0b3IgZW50cnlNYXBJdCggZW50cnlNYXAuY29uc3RCZWdpbigpICk7
IGVudHJ5TWFwSXQgIT0gZW50cnlNYXAuY29uc3RFbmQoKTsgKytlbnRyeU1hcEl0KSB7Cisg
ICAgICAgIGNvbnN0IFFCeXRlQXJyYXkmIGdyb3VwID0gZW50cnlNYXBJdC5rZXkoKS5tR3Jv
dXA7CiAKICAgICAgICAgaWYgKCFncm91cC5zdGFydHNXaXRoKHNvdXJjZSkpIC8vIG5vdGhp
bmcgdG8gZG8KICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTMxLDEyICsxMzEsMTIgQEAN
CiAgICAgICAgIGlmIChncm91cC5sZW5ndGgoKSA+IGxlbiAmJiBncm91cFtsZW5dICE9ICdc
eDFkJykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEtFbnRyeUtleSBuZXdL
ZXkgPSBrZXk7CisgICAgICAgIEtFbnRyeUtleSBuZXdLZXkgPSBlbnRyeU1hcEl0LmtleSgp
OwogCiAgICAgICAgIGlmICghc2FtZU5hbWUpCiAgICAgICAgICAgICBuZXdLZXkubUdyb3Vw
LnJlcGxhY2UoMCwgbGVuLCBkZXN0aW5hdGlvbik7CiAKLSAgICAgICAgS0VudHJ5IGVudHJ5
ID0gZW50cnlNYXBba2V5XTsKKyAgICAgICAgS0VudHJ5IGVudHJ5ID0gZW50cnlNYXBbIGVu
dHJ5TWFwSXQua2V5KCkgXTsKICAgICAgICAgZW50cnkuYkRpcnR5ID0gdHJ1ZTsKICAgICAg
ICAgb3RoZXJNYXBbbmV3S2V5XSA9IGVudHJ5OwogICAgIH0KQEAgLTE5OCwxMCArMTk4LDEw
IEBADQogICAgIFFfRChjb25zdCBLQ29uZmlnKTsKICAgICBRU3RyaW5nTGlzdCBncm91cHM7
CiAKLSAgICBmb3JlYWNoIChjb25zdCBLRW50cnlLZXkmIGtleSwgZC0+ZW50cnlNYXAua2V5
cygpKQotICAgICAgICBpZiAoa2V5Lm1LZXkuaXNOdWxsKCkgJiYgIWtleS5tR3JvdXAuaXNF
bXB0eSgpICYmCi0gICAgICAgICAgICBrZXkubUdyb3VwICE9ICI8ZGVmYXVsdD4iICYmIGtl
eS5tR3JvdXAgIT0gIiRWZXJzaW9uIikKLSAgICAgICAgICAgIGdyb3VwcyA8PCBRU3RyaW5n
Ojpmcm9tVXRmOChrZXkubUdyb3VwKTsKKyAgICBmb3IgKEtFbnRyeU1hcDo6Q29uc3RJdGVy
YXRvciBlbnRyeU1hcEl0KCBkLT5lbnRyeU1hcC5jb25zdEJlZ2luKCkgKTsgZW50cnlNYXBJ
dCAhPSBkLT5lbnRyeU1hcC5jb25zdEVuZCgpOyArK2VudHJ5TWFwSXQpCisgICAgICAgIGlm
IChlbnRyeU1hcEl0LmtleSgpLm1LZXkuaXNOdWxsKCkgJiYgIWVudHJ5TWFwSXQua2V5KCku
bUdyb3VwLmlzRW1wdHkoKSAmJgorICAgICAgICAgICAgZW50cnlNYXBJdC5rZXkoKS5tR3Jv
dXAgIT0gIjxkZWZhdWx0PiIgJiYgZW50cnlNYXBJdC5rZXkoKS5tR3JvdXAgIT0gIiRWZXJz
aW9uIikKKyAgICAgICAgICAgIGdyb3VwcyA8PCBRU3RyaW5nOjpmcm9tVXRmOChlbnRyeU1h
cEl0LmtleSgpLm1Hcm91cCk7CiAKICAgICByZXR1cm4gZ3JvdXBzOwogfQpAQCAtMjExLDEw
ICsyMTEsMTAgQEANCiAgICAgUUJ5dGVBcnJheSB0aGVHcm91cCA9IGdyb3VwICsgJ1x4MWQn
OwogICAgIFFTZXQ8UVN0cmluZz4gZ3JvdXBzOwogCi0gICAgZm9yZWFjaCAoY29uc3QgS0Vu
dHJ5S2V5JiBrZXksIGVudHJ5TWFwLmtleXMoKSkKLSAgICAgICAgaWYgKGtleS5tS2V5Lmlz
TnVsbCgpICYmIGtleS5tR3JvdXAuc3RhcnRzV2l0aCh0aGVHcm91cCkpCisgICAgZm9yIChL
RW50cnlNYXA6OkNvbnN0SXRlcmF0b3IgZW50cnlNYXBJdCggZW50cnlNYXAuY29uc3RCZWdp
bigpICk7IGVudHJ5TWFwSXQgIT0gZW50cnlNYXAuY29uc3RFbmQoKTsgKytlbnRyeU1hcEl0
KQorICAgICAgICBpZiAoZW50cnlNYXBJdC5rZXkoKS5tS2V5LmlzTnVsbCgpICYmIGVudHJ5
TWFwSXQua2V5KCkubUdyb3VwLnN0YXJ0c1dpdGgodGhlR3JvdXApKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBRU3RyaW5nIGdyb3VwbmFtZSA9IFFTdHJpbmc6OmZyb21VdGY4KGtleS5t
R3JvdXAubWlkKHRoZUdyb3VwLmxlbmd0aCgpKSk7CisgICAgICAgICAgICBRU3RyaW5nIGdy
b3VwbmFtZSA9IFFTdHJpbmc6OmZyb21VdGY4KGVudHJ5TWFwSXQua2V5KCkubUdyb3VwLm1p
ZCh0aGVHcm91cC5sZW5ndGgoKSkpOwogICAgICAgICAgICAgZ3JvdXBzIDw8IGdyb3VwbmFt
ZS5sZWZ0KGdyb3VwbmFtZS5pbmRleE9mKCdceDFkJykpOwogICAgICAgICB9CiAKQEAgLTYy
Niw5ICs2MjYsOSBAQA0KICAgICBRU2V0PFFCeXRlQXJyYXk+IGdyb3VwczsKICAgICBncm91
cHMgPDwgYUdyb3VwOwogCi0gICAgZm9yZWFjaCAoY29uc3QgS0VudHJ5S2V5JiBrZXksIGQt
PmVudHJ5TWFwLmtleXMoKSkgewotICAgICAgICBpZiAoa2V5Lm1LZXkuaXNOdWxsKCkgJiYg
a2V5Lm1Hcm91cC5zdGFydHNXaXRoKHRoZUdyb3VwKSkgewotICAgICAgICAgICAgZ3JvdXBz
IDw8IGtleS5tR3JvdXA7CisgICAgZm9yIChLRW50cnlNYXA6OkNvbnN0SXRlcmF0b3IgZW50
cnlNYXBJdCggZC0+ZW50cnlNYXAuY29uc3RCZWdpbigpICk7IGVudHJ5TWFwSXQgIT0gZC0+
ZW50cnlNYXAuY29uc3RFbmQoKTsgKytlbnRyeU1hcEl0KSB7CisgICAgICAgIGlmIChlbnRy
eU1hcEl0LmtleSgpLm1LZXkuaXNOdWxsKCkgJiYgZW50cnlNYXBJdC5rZXkoKS5tR3JvdXAu
c3RhcnRzV2l0aCh0aGVHcm91cCkpIHsKKyAgICAgICAgICAgIGdyb3VwcyA8PCBlbnRyeU1h
cEl0LmtleSgpLm1Hcm91cDsKICAgICAgICAgfQogICAgIH0KIAo=
--------------050807020208050100010408--