Date: prev next · Thread: first prev next last
2010 Archives by date, by thread · List index


    Another performance improvement for the perl installer.  This one
brought my ./bin/ooinstall -l <dirname> time down from about 4 1/2
minutes to under 4 minutes.  (Warning:  that number is in the right
ballpark, but is from a very small number of install runs.)  The only
functional change was to trim all leading/trailing whitespace from the
list elements before eliminating duplicates (the old function only
checks half of the leading/trailing edges, and which edge depends on
where in the list the element came from; I couldn't find a good reason
for that pattern, so I made it uniform).

    I'm finding the NYTProf module useful for finding performance
bottlenecks in the perl code, although on my system the times seem to
bloat out by a factor of 3 or so with the profiler running.

LGPLv3+/MPL.

Jordan Ayers
From 7d6e4413d90f9e7bc6451b89fe3c481a303279de Mon Sep 17 00:00:00 2001
From: Jordan Ayers <jordan.ayers@gmail.com>
Date: Tue, 30 Nov 2010 22:36:28 -0600
Subject: [PATCH] Accelerate perl installer:  optimize installer::scriptitems::optimize_list().

Replace call to convert_stringlist_into_hash with a simpler method using split; this requires 
significantly fewer data copy operations.
The new routine strips all whitespace from the front and end of each value; the old function call 
stripped leading whitespace, most of the time.
---
 solenv/bin/modules/installer/scriptitems.pm |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/solenv/bin/modules/installer/scriptitems.pm 
b/solenv/bin/modules/installer/scriptitems.pm
index b96b77b..6ba76fe 100644
--- a/solenv/bin/modules/installer/scriptitems.pm
+++ b/solenv/bin/modules/installer/scriptitems.pm
@@ -2031,11 +2031,16 @@ sub quoting_illegal_filenames
 sub optimize_list
 {
     my ( $longlist ) = @_;
-
+    my %tmpHash;
     my $shortlist = "";
-    my $hashref = installer::converter::convert_stringlist_into_hash(\$longlist, ",");
-    foreach my $key (sort keys %{$hashref} ) { $shortlist = "$shortlist,$key"; }
-    $shortlist =~ s/^\s*\,//;
+
+    $longlist =~ s/^\s*|\s*$//g;
+    $longlist =~ s/\s*,\s*/,/g;
+
+    foreach ( split /,/, $longlist ) { $tmpHash{$_} = 1; }
+
+    foreach (sort keys %tmpHash ) { $shortlist .= "$_,"; }
+    chop( $shortlist );
 
     return $shortlist;
 }
-- 
1.7.1


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.