[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--