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.

Reply via email to