From owner-svn-src-all@FreeBSD.ORG Wed Jul 4 16:25:12 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 59E8A106564A; Wed, 4 Jul 2012 16:25:12 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 292478FC14; Wed, 4 Jul 2012 16:25:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q64GPCU8020464; Wed, 4 Jul 2012 16:25:12 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q64GPBf4020457; Wed, 4 Jul 2012 16:25:11 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201207041625.q64GPBf4020457@svn.freebsd.org> From: Gabor Kovesdan Date: Wed, 4 Jul 2012 16:25:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238108 - head/usr.bin/sort X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jul 2012 16:25:12 -0000 Author: gabor Date: Wed Jul 4 16:25:11 2012 New Revision: 238108 URL: http://svn.freebsd.org/changeset/base/238108 Log: - Change --nthreads parameter to --parallel for GNU compatibility - Change default sort method to mergesort, which has a better worst case performance than qsort Submitted by: Oleg Moskalenko Modified: head/usr.bin/sort/file.c head/usr.bin/sort/file.h head/usr.bin/sort/radixsort.c head/usr.bin/sort/sort.1.in head/usr.bin/sort/sort.c Modified: head/usr.bin/sort/file.c ============================================================================== --- head/usr.bin/sort/file.c Wed Jul 4 14:25:14 2012 (r238107) +++ head/usr.bin/sort/file.c Wed Jul 4 16:25:11 2012 (r238108) @@ -1297,7 +1297,7 @@ sort_list_to_file(struct sort_list *list } if (sort_opts_vals.sort_method == SORT_DEFAULT) - sort_opts_vals.sort_method = SORT_QSORT; + sort_opts_vals.sort_method = DEFAULT_SORT_ALGORITHM; if (debug_sort) printf("sort_method=%s\n", @@ -1314,9 +1314,12 @@ sort_list_to_file(struct sort_list *list case SORT_HEAPSORT: mt_sort(list, heapsort, outfile); break; - default: + case SORT_QSORT: mt_sort(list, sort_qsort, outfile); break; + default: + mt_sort(list, DEFAULT_SORT_FUNC, outfile); + break; } } Modified: head/usr.bin/sort/file.h ============================================================================== --- head/usr.bin/sort/file.h Wed Jul 4 14:25:14 2012 (r238107) +++ head/usr.bin/sort/file.h Wed Jul 4 16:25:11 2012 (r238108) @@ -39,6 +39,9 @@ #define SORT_HEAPSORT 3 #define SORT_RADIXSORT 4 +#define DEFAULT_SORT_ALGORITHM SORT_HEAPSORT +#define DEFAULT_SORT_FUNC heapsort + /* * List of data to be sorted. */ Modified: head/usr.bin/sort/radixsort.c ============================================================================== --- head/usr.bin/sort/radixsort.c Wed Jul 4 14:25:14 2012 (r238107) +++ head/usr.bin/sort/radixsort.c Wed Jul 4 16:25:11 2012 (r238108) @@ -45,6 +45,8 @@ __FBSDID("$FreeBSD$"); #include "coll.h" #include "radixsort.h" +#define DEFAULT_SORT_FUNC_RADIXSORT mergesort + #define TINY_NODE(sl) ((sl)->tosort_num < 65) #define SMALL_NODE(sl) ((sl)->tosort_num < 5) @@ -349,7 +351,7 @@ run_sort_level_next(struct sort_level *s /* NOTREACHED */ err(2, "Radix sort error 3"); } else - qsort(sl->leaves, sl->leaves_num, + DEFAULT_SORT_FUNC_RADIXSORT(sl->leaves, sl->leaves_num, sizeof(struct sort_list_item *), (int(*)(const void *, const void *)) func); @@ -389,12 +391,12 @@ run_sort_level_next(struct sort_level *s sizeof(struct sort_list_item *), (int(*)(const void *, const void *)) list_coll); } else { - qsort(sl->leaves, sl->leaves_num, + DEFAULT_SORT_FUNC_RADIXSORT(sl->leaves, sl->leaves_num, sizeof(struct sort_list_item *), (int(*)(const void *, const void *)) list_coll); } } else if (!sort_opts_vals.sflag && sort_opts_vals.complex_sort) { - qsort(sl->leaves, sl->leaves_num, + DEFAULT_SORT_FUNC_RADIXSORT(sl->leaves, sl->leaves_num, sizeof(struct sort_list_item *), (int(*)(const void *, const void *)) list_coll_by_str_only); } @@ -541,12 +543,12 @@ run_top_sort_level(struct sort_level *sl sizeof(struct sort_list_item *), (int(*)(const void *, const void *)) list_coll); } else { - qsort(sl->leaves, sl->leaves_num, + DEFAULT_SORT_FUNC_RADIXSORT(sl->leaves, sl->leaves_num, sizeof(struct sort_list_item *), (int(*)(const void *, const void *)) list_coll); } } else if (!sort_opts_vals.sflag && sort_opts_vals.complex_sort) { - qsort(sl->leaves, sl->leaves_num, + DEFAULT_SORT_FUNC_RADIXSORT(sl->leaves, sl->leaves_num, sizeof(struct sort_list_item *), (int(*)(const void *, const void *)) list_coll_by_str_only); } Modified: head/usr.bin/sort/sort.1.in ============================================================================== --- head/usr.bin/sort/sort.1.in Wed Jul 4 14:25:14 2012 (r238107) +++ head/usr.bin/sort/sort.1.in Wed Jul 4 16:25:11 2012 (r238108) @@ -33,7 +33,7 @@ .\" .\" @(#)sort.1 8.1 (Berkeley) 6/6/93 .\" -.Dd May 25, 2012 +.Dd July 3, 2012 .Dt SORT 1 .Os .Sh NAME @@ -329,7 +329,7 @@ is used. .It Fl Fl debug Print some extra information about the sorting process to the standard output. -%%THREADS%%.It Fl Fl nthreads +%%THREADS%%.It Fl Fl parallel %%THREADS%%Set the maximum number of execution threads. %%THREADS%%Default number equals to the number of CPUs. .It Fl Fl files0-from Ns = Ns Ar filename Modified: head/usr.bin/sort/sort.c ============================================================================== --- head/usr.bin/sort/sort.c Wed Jul 4 14:25:14 2012 (r238107) +++ head/usr.bin/sort/sort.c Wed Jul 4 16:25:11 2012 (r238108) @@ -91,7 +91,7 @@ const char *nlsstr[] = { "", "[--heapsort] [--mergesort] [--radixsort] [--qsort] " "[--mmap] " #if defined(SORT_THREADS) - "[--nthreads thread_no] " + "[--parallel thread_no] " #endif "[--human-numeric-sort] " "[--version-sort] [--random-sort [--random-source file]] " @@ -132,7 +132,7 @@ enum VERSION_OPT, DEBUG_OPT, #if defined(SORT_THREADS) - NTHREADS_OPT, + PARALLEL_OPT, #endif RANDOMSOURCE_OPT, COMPRESSPROGRAM_OPT, @@ -171,7 +171,7 @@ struct option long_options[] = { { "numeric-sort", no_argument, NULL, 'n' }, { "output", required_argument, NULL, 'o' }, #if defined(SORT_THREADS) - { "nthreads", required_argument, NULL, NTHREADS_OPT }, + { "parallel", required_argument, NULL, PARALLEL_OPT }, #endif { "qsort", no_argument, NULL, QSORT_OPT }, { "radixsort", no_argument, NULL, RADIXSORT_OPT }, @@ -1119,7 +1119,7 @@ main(int argc, char **argv) } break; #if defined(SORT_THREADS) - case NTHREADS_OPT: + case PARALLEL_OPT: nthreads = (size_t)(atoi(optarg)); if (nthreads < 1) nthreads = 1;