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.