i18nlangtag/source/isolang/mslangid.cxx |    9 +++++++++
 1 file changed, 9 insertions(+)

New commits:
commit 18102e3d7f832b8d5e445e427b55654f5bfd30b0
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Fri May 17 15:59:45 2024 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri May 17 18:58:13 2024 +0200

    cool#8570 single-element cache in MsLangId::getScriptType
    
    this method is hit pretty hard, so try a single element cache
    
    Change-Id: I7c9f9285037a181ee24fbdf04cabc15b40a2ff03
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167781
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/i18nlangtag/source/isolang/mslangid.cxx 
b/i18nlangtag/source/isolang/mslangid.cxx
index 3a420dba2d2c..4e0a5584a28d 100644
--- a/i18nlangtag/source/isolang/mslangid.cxx
+++ b/i18nlangtag/source/isolang/mslangid.cxx
@@ -364,6 +364,13 @@ bool MsLangId::needsSequenceChecking( LanguageType nLang )
 // static
 sal_Int16 MsLangId::getScriptType( LanguageType nLang )
 {
+    // single-element cache
+    static thread_local LanguageType nCachedLang = 
LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA;
+    static thread_local sal_Int16 nCachedScript = 
css::i18n::ScriptType::COMPLEX;
+
+    if (nCachedLang == nLang)
+        return nCachedScript;
+
     sal_Int16 nScript;
 
         // CTL
@@ -471,6 +478,8 @@ sal_Int16 MsLangId::getScriptType( LanguageType nLang )
     {
         nScript = css::i18n::ScriptType::LATIN;
     }
+    nCachedLang = nLang;
+    nCachedScript = nScript;
     return nScript;
 }
 

Reply via email to