BTW, depending on what the problem is we are actually talking about, even
the numbers from the initial post might be fine. With those numbers,
sorting the 2GB should take roughly half an hour. A significant amount of
time, yes, but if you only need to do it once (or once a day or week or
whatever) it might not be worth spending any significant amount of time
making it go faster. Seems counter-intuitive, I know, but CPU time is very
cheap and human time is very expensive :)

On Wed, Nov 29, 2017 at 8:08 PM, Michael Jones <michael.jo...@gmail.com>
wrote:

> here's a little more detail on system / direct-type / and parallel
> direct-type sorting:
>
> celeste:double mtj$ go test -run=NONE  -bench Sort
> goos: darwin
> goarch: amd64
> pkg: double
> BenchmarkSSort250-8          100000      11285 ns/op
> BenchmarkSSort500-8           50000      31001 ns/op
> BenchmarkSSort1000-8         20000      93048 ns/op
> BenchmarkSSort2000-8         10000     218677 ns/op
> BenchmarkSSort4000-8          3000     473944 ns/op
> BenchmarkSSort8000-8          2000    1033446 ns/op
> BenchmarkSSort16000-8          1000    2208783 ns/op
> BenchmarkSSort32000-8           300    4599316 ns/op
> BenchmarkSSort64000-8           200    9571278 ns/op
> BenchmarkSSort128000-8         100   20524194 ns/op
> BenchmarkSSort256000-8          30   42263166 ns/op
> BenchmarkSSort512000-8          20   89330628 ns/op
> BenchmarkSSort1024000-8          10 190409724 ns/op
> BenchmarkQSort250-8          500000       2978 ns/op
> BenchmarkQSort500-8          200000      10271 ns/op
> BenchmarkQSort1000-8         30000      36474 ns/op
> BenchmarkQSort2000-8         20000      93520 ns/op
> BenchmarkQSort4000-8         10000     217781 ns/op
> BenchmarkQSort8000-8          3000     470050 ns/op
> BenchmarkQSort16000-8          2000    1020604 ns/op
> BenchmarkQSort32000-8          1000    2184270 ns/op
> BenchmarkQSort64000-8           300    4750204 ns/op
> BenchmarkQSort128000-8         200    9841153 ns/op
> BenchmarkQSort256000-8         100   21644805 ns/op
> BenchmarkQSort512000-8          30   46220023 ns/op
> BenchmarkQSort1024000-8          20   89012565 ns/op
> BenchmarkPSort250-8          500000       3009 ns/op
> BenchmarkPSort500-8          200000      10284 ns/op
> BenchmarkPSort1000-8         50000      36435 ns/op
> BenchmarkPSort2000-8         30000      48991 ns/op
> BenchmarkPSort4000-8         20000      87163 ns/op
> BenchmarkPSort8000-8         10000     156933 ns/op
> BenchmarkPSort16000-8          5000     289609 ns/op
> BenchmarkPSort32000-8          2000     616701 ns/op
> BenchmarkPSort64000-8          1000    1183778 ns/op
> BenchmarkPSort128000-8         500    2602444 ns/op
> BenchmarkPSort256000-8         300    5492333 ns/op
> BenchmarkPSort512000-8         100   10974195 ns/op
> BenchmarkPSort1024000-8          50   22786689 ns/op
> PASS
> ok  double 104.041s
>
> ...which has parallel sorting an additional 2x faster on average. More
> CPUs helps, but not anywhere close to scalably. The real issue here is
> cache effects, memory bandwidth, and bounds checking.
>
> On Wed, Nov 29, 2017 at 10:47 AM, Michael Jones <michael.jo...@gmail.com>
> wrote:
>
>> Using a personal sort to avoid the standard sort's abstraction...
>>
>> // 50331648 bytes,    6291456 8-byte elements,  0.687317 <06873%2017>
>> seconds (48MB of uint64)
>> // 50331648 bytes,   50331648 1-byte elements,  1.605258 seconds (48MB
>> of uint8)
>> // 2147483648 <(214)%20748-3648> bytes,  268435456 8-byte elements,
>> 35.262593 seconds (2GB of uint64)
>> // 2147483648 <(214)%20748-3648> bytes, 2147483648 <(214)%20748-3648>
>> 1-byte elements, 68.793937 seconds (2GB of uint8)
>>
>> ...is good for another 2-3x. Running in parallel mode would get you
>> another 3x-5x, but i expect 5x this rate is as good as you will get. (at
>> least with battery, laptop, pyjamas, and reclining on a sofa :-)
>> --
>> Michael T. Jones
>> michael.jo...@gmail.com
>>
>
>
>
> --
> Michael T. Jones
> michael.jo...@gmail.com
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to