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

New commits:
commit f1ef9379fd9679775eadeecc598aa8087d09bb77
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: Sat May 18 12:29:08 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>
    (cherry picked from commit 18102e3d7f832b8d5e445e427b55654f5bfd30b0)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167687
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/i18nlangtag/source/isolang/mslangid.cxx 
b/i18nlangtag/source/isolang/mslangid.cxx
index aa913a7f7ff4..a989fbed75f4 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
@@ -475,6 +482,8 @@ sal_Int16 MsLangId::getScriptType( LanguageType nLang )
     {
         nScript = css::i18n::ScriptType::LATIN;
     }
+    nCachedLang = nLang;
+    nCachedScript = nScript;
     return nScript;
 }
 

Reply via email to