Hi,

I'd also be very interested in looking at 'bytconv'. And most probably
should use it in anger :)

-s

sent from my droid

On Aug 31, 2017 8:28 PM, "Michael Jones" <michael.jo...@gmail.com> wrote:

> Nice! Is "bytconv" shared somewhere?
>
> On Thu, Aug 31, 2017 at 10:53 AM, peterGo <go.peter...@gmail.com> wrote:
>
>> Michael,
>>
>> n your code, you have :
>>
>> const n = 1000 * 1000
>>
>> for i := 0; i < n && scan.Scan(); i++ {
>>     d, _ := strconv.Atoi(scan.Text())
>>     array[i] = int64(d)
>> }
>>
>> https://play.golang.org/p/SgpAXyvsGs
>>
>> Here's a benchmark that demonstrates the fundamental issue, unnecessary
>> string conversions.
>> ,
>> BenchmarkAtoiBytconv-4       50000000     30.4 ns/op    0 B/op    0
>> allocs/op
>> BenchmarkAtoiStrconv-4       20000000    102 ns/op      8 B/op    1
>> allocs/op
>>
>> https://play.golang.org/p/oSQ8RZeGL7
>>
>> Peter
>>
>>
>> On Thursday, August 31, 2017 at 12:24:20 PM UTC-4, peterGo wrote:
>>>
>>> Michael,
>>>
>>> Your read times look slow to me. I used bytconv instead of strconv.
>>>
>>> bytconv:
>>> read 1000000 98.517584ms
>>> sort 1000000 481.994354ms
>>>
>>> strconv:
>>> read 1000000 174.720883ms
>>> sort 1000000 479.437831ms
>>>
>>> bytconv is the missing Go standard library package. bytconv is the byte
>>> input analog of string input strconv.
>>>
>>> Peter
>>>
>>> On Wednesday, August 30, 2017 at 7:43:49 PM UTC-4, Michael Jones wrote:
>>>>
>>>> good point. I was trying to show that the buffered stdin was "just
>>>> like" normal scanning but the performance was less compared to the updated
>>>> scanning code.
>>>>
>>>> here is another version, this time with a data generator and since the
>>>> input is line oriented, the default split function is fine.
>>>>
>>>> https://play.golang.org/p/SgpAXyvsGs
>>>> read 1000000 65.362993ms
>>>> sort 1000000 187.092493ms
>>>>
>>>>
>>>> On Wed, Aug 30, 2017 at 2:56 PM, Patrick Smith <pat42...@gmail.com>
>>>> wrote:
>>>>
>>>>> That is simpler, but slower. Not nearly as slow as using unbuffered io
>>>>> though. Timings on my machine, reading 1e6 integers chosen randomly from
>>>>> the range [0,1e18):
>>>>>
>>>>> Original code https://play.golang.org/p/grB-muK7hw
>>>>> 5.626974435s
>>>>> 155.367779ms
>>>>>
>>>>> Original poster's optimized code https://play.golang.org/p/1Aoxwwv-zo
>>>>> 168.638597ms
>>>>> 150.923225ms
>>>>>
>>>>> Michael's simpler code https://play.golang.org/p/tMyipz6sYU
>>>>> 954.543351ms
>>>>> 166.710399ms
>>>>>
>>>>> So this is about 6 times slower. My guess is this is due to the use of
>>>>> reflection in fmt.Fscanf. But that is just a guess; I don't really have 
>>>>> any
>>>>> evidence to back it up.
>>>>>
>>>>> On Wed, Aug 30, 2017 at 1:33 PM, Michael Jones <michae...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> This can be much simpler...
>>>>>> https://play.golang.org/p/tMyipz6sYU
>>>>>>
>>>>>> On Wed, Aug 30, 2017 at 7:55 AM, Nilsocket <nils...@gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>> Can you provide example code for how you read the input?
>>>>>>>>
>>>>>>>
>>>>>>> Both of them were given same input size is:1000000, (i.e., 1
>>>>>>> million)
>>>>>>>
>>>>>>> https://play.golang.org/p/grB-muK7hw
>>>>>>> // Time taken to read input : 9.840256889s
>>>>>>> // Time taken to sort: 731.469604ms
>>>>>>>
>>>>>>> I have implemented the same using bufio:
>>>>>>>
>>>>>>> https://play.golang.org/p/1Aoxwwv-zo
>>>>>>> // Time taken to read input : 377.038152ms
>>>>>>> // Time taken to sort: 688.20638ms
>>>>>>>
>>>>>>> --
>>>>>>> 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...@googlegroups.com.
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Michael T. Jones
>>>>>> michae...@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...@googlegroups.com.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Michael T. Jones
>>>> michae...@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.
>>
>
>
>
> --
> 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.
>

-- 
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