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


Hi,

I didn't expect my previous patch series to be merged so quickly!
This follow-up patch removes the installer::sorter module altogether -
the Schwartzian transform was not appropriate, as the overhead of
map-sort-map is greater than just looking up the hash values for most
workloads.

So this also removes Libreoffice's only Perl unit test. ;)

-- 
Tim Retout <tim@retout.co.uk>
From 3bef665d3939fd9b714bc783ac691ccb737be823 Mon Sep 17 00:00:00 2001
From: Tim Retout <tim@retout.co.uk>
Date: Thu, 16 Feb 2012 18:58:20 +0000
Subject: [PATCH] Inline and remove installer::sorter

---
 solenv/bin/make_installer.pl            |    7 ++--
 solenv/bin/modules/installer/sorter.pm  |   53 -------------------------------
 solenv/bin/modules/t/installer-sorter.t |   48 ----------------------------
 3 files changed, 3 insertions(+), 105 deletions(-)
 delete mode 100644 solenv/bin/modules/installer/sorter.pm
 delete mode 100644 solenv/bin/modules/t/installer-sorter.t

diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index 45dede0..08c118b 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -57,7 +57,6 @@ use installer::scpzipfiles;
 use installer::scriptitems;
 use installer::setupscript;
 use installer::simplepackage;
-use installer::sorter qw(sorting_array_of_hashes);
 use installer::strip;
 use installer::substfilenamefiles;
 use installer::systemactions;
@@ -1101,7 +1100,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         if ( $installer::globals::globallogging ) { 
installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3alangpack.log", 
$directoriesforepmarrayref); }
         ($directoriesforepmarrayref, $alldirectoryhash) = 
installer::scriptitems::collect_directories_with_create_flag_from_directoryarray($dirsinproductlanguageresolvedarrayref,
 $alldirectoryhash);
         if ( $installer::globals::globallogging ) { 
installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3blangpack.log", 
$directoriesforepmarrayref); }
-        sorting_array_of_hashes($directoriesforepmarrayref, "HostName");
+        @$directoriesforepmarrayref = sort { $a->{"HostName"} cmp $b->{"HostName"} } 
@$directoriesforepmarrayref;
         if ( $installer::globals::globallogging ) { 
installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3clangpack.log", 
$directoriesforepmarrayref); }
 
         if ( $installer::globals::iswindowsbuild )
@@ -1130,7 +1129,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         if ( $installer::globals::globallogging ) { 
installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3ahelppack.log", 
$directoriesforepmarrayref); }
         ($directoriesforepmarrayref, $alldirectoryhash) = 
installer::scriptitems::collect_directories_with_create_flag_from_directoryarray($dirsinproductlanguageresolvedarrayref,
 $alldirectoryhash);
         if ( $installer::globals::globallogging ) { 
installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3bhelppack.log", 
$directoriesforepmarrayref); }
-        sorting_array_of_hashes($directoriesforepmarrayref, "HostName");
+        @$directoriesforepmarrayref = sort { $a->{"HostName"} cmp $b->{"HostName"} } 
@$directoriesforepmarrayref;
         if ( $installer::globals::globallogging ) { 
installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist3chelppack.log", 
$directoriesforepmarrayref); }
 
         if ( $installer::globals::iswindowsbuild )
@@ -1171,7 +1170,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
             ($directoriesforepmarrayref, $alldirectoryhash) = 
installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref);
             if ( $installer::globals::globallogging ) { 
installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist4_patch.log", 
$directoriesforepmarrayref); }
 
-            sorting_array_of_hashes($directoriesforepmarrayref, "HostName");
+            @$directoriesforepmarrayref = sort { $a->{"HostName"} cmp $b->{"HostName"} } 
@$directoriesforepmarrayref;
             if ( $installer::globals::globallogging ) { 
installer::files::save_array_of_hashes($loggingdir . "directoriesforepmlist5_patch.log", 
$directoriesforepmarrayref); }
         }
     }
diff --git a/solenv/bin/modules/installer/sorter.pm b/solenv/bin/modules/installer/sorter.pm
deleted file mode 100644
index b08dd80..0000000
--- a/solenv/bin/modules/installer/sorter.pm
+++ /dev/null
@@ -1,53 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org.  If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-package installer::sorter;
-
-use strict;
-use warnings;
-
-use base 'Exporter';
-
-our @EXPORT_OK = qw(
-    sorting_array_of_hashes
-);
-
-#########################################
-# Sorting an array of hashes
-#########################################
-
-sub sorting_array_of_hashes
-{
-    my ($arrayref, $sortkey) = @_;
-
-    @$arrayref = map { $_->[1] }
-                 sort { $a->[0] cmp $b->[0] }
-                 map { [$_->{$sortkey}, $_] }
-                 @$arrayref;
-}
-
-1;
diff --git a/solenv/bin/modules/t/installer-sorter.t b/solenv/bin/modules/t/installer-sorter.t
deleted file mode 100644
index fe67b4e..0000000
--- a/solenv/bin/modules/t/installer-sorter.t
+++ /dev/null
@@ -1,48 +0,0 @@
-# Version: MPL 1.1 / GPLv3+ / LGPLv3+
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License or as specified alternatively below. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# Major Contributor(s):
-# [ Copyright (C) 2012 Tim Retout <tim@retout.co.uk> (initial developer) ]
-#
-# All Rights Reserved.
-#
-# For minor contributions see the git repository.
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
-# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
-# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
-# instead of those above.
-
-use strict;
-use warnings;
-
-use lib '.';
-
-use Test::More;
-use List::Util 'shuffle';
-
-BEGIN {
-    use_ok('installer::sorter', qw(
-        sorting_array_of_hashes
-    ));
-}
-
-my @loh_str_sorted = map { { "key" => $_ } } ("a".."j");
-
-my @loh_str_random = shuffle @loh_str_sorted;
-
-sorting_array_of_hashes(\@loh_str_random, "key");
-
-is_deeply(\@loh_str_random, \@loh_str_sorted);
-
-done_testing();
-- 
1.7.8.3


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.