To file a bug (and have it treated seriously) you would need to demonstrate
that it is causing problems in a program that actually does something
useful, not just a pathological code sample. My expectation would be that
once you start doing some real processing, the difference between
time.Now() invocations becomes non-zero, that is this "issue" doesn't
reproduce with "real" practical programs.


On Fri, May 4, 2018 at 10:26 PM, Andrei Avram <andrei.avram....@gmail.com>
wrote:

> But I don't think it is because Windows is so much faster than Linux
>>
>
> Yeah... :) I was exploring all cases.
>
>
>  and/or the way the time package implemented is different between Windows
>> and Linux
>
>
> Could this be considered a possible Go bug and would it worth opening an
> issue on Github?
>
>
> On Friday, May 4, 2018 at 10:57:46 PM UTC+3, speter wrote:
>>
>> So on Linux it's working as expected. In the playground time is
>> "virtual"; the start time is fixed and it doesn't progress unless you
>> explicitly Sleep -- because you don't Sleep in your program, time.Now()
>> returns the same time on both invocation.
>>
>> So the only slightly surprising part is that on Windows, time as measured
>> by time.Now() doesn't progress between the two statements. But I don't
>> think it is because Windows is so much faster than Linux. :) I'd guess this
>> is because the way Windows manages time is different from how Linux manages
>> it, and/or the way the time package implemented is different between
>> Windows and Linux. The result of the cross-platform differences seems to be
>> less precision on Windows -- at least in this specific scenario.
>>
>> Peter
>>
>>
>> On Fri, May 4, 2018 at 9:33 PM, Andrei Avram <andrei.a...@gmail.com>
>> wrote:
>>
>>> Peter and Ian, you are both wright regarding the printing. Still, on
>>> Linux I have different values than on Go Playground.
>>>
>>> Regarding the speed, Peter, do you think that on Windows the two calls
>>> just run faster every time?
>>>
>>> On Friday, May 4, 2018 at 9:07:15 PM UTC+3, speter wrote:
>>>>
>>>> b is slightly less than 3 because there is a bit of time between the
>>>> two calls to time.Now().
>>>>
>>>> If you substitute this:
>>>>         fmt.Printf("input: %20.18f\n", b)
>>>>
>>>> you get something like
>>>> input: 2.999999965553350911
>>>>
>>>> HTH
>>>> Peter
>>>>
>>>> On Fri, May 4, 2018 at 7:26 PM, Andrei Avram <andrei.a...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hello everyone,
>>>>>
>>>>> Today I ran into a situation that is strange to me. I ran the
>>>>> following code on two Linux machines (go run floor.go), on two Windows
>>>>> ones, and on Go Playground.
>>>>>
>>>>> package main
>>>>>
>>>>> import (
>>>>> "time"
>>>>> "math"
>>>>> )
>>>>>
>>>>> func main() {
>>>>> datetime := time.Now().Add(time.Hour * 24 * 7 * 4 * 12 * 3)
>>>>> seconds := -1 * int(time.Now().Sub(datetime).Seconds())
>>>>> a := 29030400
>>>>> b := float64(seconds) / float64(a)
>>>>>
>>>>> println("input:", b)
>>>>> println("floor:", math.Floor(b))
>>>>> }
>>>>>
>>>>> On Linux the output is:
>>>>>
>>>>> input: +3.000000e+000
>>>>> floor: *+2.000000e+000*
>>>>>
>>>>> On Windows and Playground:
>>>>>
>>>>> input: +3.000000e+000
>>>>> floor: *+3.000000e+000*
>>>>>
>>>>> As you can see, on Linux the floor value of float value 3 is rounded
>>>>> down to 2, while on Windows/Playground it's 3.
>>>>>
>>>>> The code was ran with Go 1.10 and 1.10.2.
>>>>>
>>>>> The system details of one of the Linux machines, as reported by "go
>>>>> bug":
>>>>>
>>>>> go version go1.10.2 linux/amd64
>>>>> GOARCH="amd64"
>>>>> GOBIN=""
>>>>> GOCACHE="/home/msd/.cache/go-build"
>>>>> GOEXE=""
>>>>> GOHOSTARCH="amd64"
>>>>> GOHOSTOS="linux"
>>>>> GOOS="linux"
>>>>> GOPATH="/home/msd/go/"
>>>>> GORACE=""
>>>>> GOROOT="/usr/local/go"
>>>>> GOTMPDIR=""
>>>>> GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
>>>>> GCCGO="gccgo"
>>>>> CC="gcc"
>>>>> CXX="g++"
>>>>> CGO_ENABLED="1"
>>>>> CGO_CFLAGS="-g -O2"
>>>>> CGO_CPPFLAGS=""
>>>>> CGO_CXXFLAGS="-g -O2"
>>>>> CGO_FFLAGS="-g -O2"
>>>>> CGO_LDFLAGS="-g -O2"
>>>>> PKG_CONFIG="pkg-config"
>>>>> GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0
>>>>> -fdebug-prefix-map=/tmp/go-build304261270=/tmp/go-build
>>>>> -gno-record-gcc-switches"
>>>>> GOROOT/bin/go version: go version go1.10.2 linux/amd64
>>>>> GOROOT/bin/go tool compile -V: compile version go1.10.2
>>>>> uname -sr: Linux 4.13.0-37-generic
>>>>> Distributor ID: Ubuntu
>>>>> Description: Ubuntu 16.04.4 LTS
>>>>> Release: 16.04
>>>>> Codename: xenial
>>>>> /lib/x86_64-linux-gnu/libc.so.6: GNU C Library (Ubuntu GLIBC
>>>>> 2.23-0ubuntu10) stable release version 2.23, by Roland McGrath et al.
>>>>> gdb --version: GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
>>>>>
>>>>>
>>>>> Is there something I miss or could this be an issue?
>>>>>
>>>>> Thanks,
>>>>> Andrei
>>>>>
>>>>> --
>>>>> 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.
>>>>>
>>>>
>>>> --
>>> 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.
>>>
>>
>> --
> 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