RGBboy
2017-06-04 17:17:44 UTC
I have been using Time.every for a project that requires ticks at a
constant interval. I found that different platforms drift by varying
amounts. Some platforms seem to oscillate around the desired 0 millisecond
drift. This is acceptable for my use case. However some platforms
constantly increase in drift over time. This is unacceptable for my use
case.
I put together an example application with Ellie that exhibits the issue (
https://ellie-app.com/3p4mpnVyTj8a1/2). If you compile and open up the
console you can see how much the application drifts over time in your
browser. I have a bunch of results from the platforms that I have access
to. You can see that Safari and Node.js both increase in drift over time:
*Chrome 58.0.3029.110:*
DRIFT: Nothing
DRIFT: Just 4
DRIFT: Just 4
DRIFT: Just -1
DRIFT: Just 0
DRIFT: Just 1
DRIFT: Just 2
DRIFT: Just 3
DRIFT: Just 5
DRIFT: Just 1
DRIFT: Just 3
DRIFT: Just 4
DRIFT: Just -1
DRIFT: Just 1
DRIFT: Just 0
DRIFT: Just 2
*Firefox 47.0:*
DRIFT: Nothing
DRIFT: Just -2
DRIFT: Just 0
DRIFT: Just 2
DRIFT: Just -2
DRIFT: Just -3
DRIFT: Just -1
DRIFT: Just 0
DRIFT: Just -2
DRIFT: Just -3
DRIFT: Just 3
DRIFT: Just -2
DRIFT: Just -3
DRIFT: Just -2
DRIFT: Just -1
DRIFT: Just -2
*Safari 10.1:*
DRIFT: Nothing
DRIFT: Just 0
DRIFT: Just 0
DRIFT: Just 4
DRIFT: Just 3
DRIFT: Just 4
DRIFT: Just 4
DRIFT: Just 4
DRIFT: Just 5
DRIFT: Just 5
DRIFT: Just 6
DRIFT: Just 7
DRIFT: Just 8
DRIFT: Just 9
DRIFT: Just 10
DRIFT: Just 11
*Node.js 7.10.0:*
DRIFT: Nothing
DRIFT: Just 2
DRIFT: Just 5
DRIFT: Just 6
DRIFT: Just 10
DRIFT: Just 17
DRIFT: Just 22
DRIFT: Just 27
DRIFT: Just 32
DRIFT: Just 37
DRIFT: Just 40
DRIFT: Just 43
DRIFT: Just 45
DRIFT: Just 51
DRIFT: Just 54
DRIFT: Just 56
*Node.js 8.0.0:*
DRIFT: Nothing
DRIFT: Just 4
DRIFT: Just 6
DRIFT: Just 7
DRIFT: Just 8
DRIFT: Just 12
DRIFT: Just 14
DRIFT: Just 14
DRIFT: Just 14
DRIFT: Just 20
DRIFT: Just 23
DRIFT: Just 25
DRIFT: Just 25
DRIFT: Just 30
DRIFT: Just 32
DRIFT: Just 37
There are a number of ways I can mitigate the issue but I am wondering
where is the most pragmatic place for this to be fixed?
*The given platform?*
This would mean Safari, Node and any other inconsistent platforms fix this.
This seems like it is extremely unlikely to happen. For example this is a
known issue across multiple node version that was raised almost a year ago
with no fix yet (https://github.com/nodejs/node/issues/7346).
*Elm's Core Time module?*
This would give consistent behaviour for all consumers no matter what
platform they are running on. I have made a proof of concept that enables
this so it is possible. I'm just not sure if this is a change that aligns
with the intension of the module.
*My application?*
There are a number of things I could do within my application to mitigate
the issue (which I am already doing). For example I could track the drift
and counter it in my subscription. My only reservation here is that others
will face the same issue.
constant interval. I found that different platforms drift by varying
amounts. Some platforms seem to oscillate around the desired 0 millisecond
drift. This is acceptable for my use case. However some platforms
constantly increase in drift over time. This is unacceptable for my use
case.
I put together an example application with Ellie that exhibits the issue (
https://ellie-app.com/3p4mpnVyTj8a1/2). If you compile and open up the
console you can see how much the application drifts over time in your
browser. I have a bunch of results from the platforms that I have access
to. You can see that Safari and Node.js both increase in drift over time:
*Chrome 58.0.3029.110:*
DRIFT: Nothing
DRIFT: Just 4
DRIFT: Just 4
DRIFT: Just -1
DRIFT: Just 0
DRIFT: Just 1
DRIFT: Just 2
DRIFT: Just 3
DRIFT: Just 5
DRIFT: Just 1
DRIFT: Just 3
DRIFT: Just 4
DRIFT: Just -1
DRIFT: Just 1
DRIFT: Just 0
DRIFT: Just 2
*Firefox 47.0:*
DRIFT: Nothing
DRIFT: Just -2
DRIFT: Just 0
DRIFT: Just 2
DRIFT: Just -2
DRIFT: Just -3
DRIFT: Just -1
DRIFT: Just 0
DRIFT: Just -2
DRIFT: Just -3
DRIFT: Just 3
DRIFT: Just -2
DRIFT: Just -3
DRIFT: Just -2
DRIFT: Just -1
DRIFT: Just -2
*Safari 10.1:*
DRIFT: Nothing
DRIFT: Just 0
DRIFT: Just 0
DRIFT: Just 4
DRIFT: Just 3
DRIFT: Just 4
DRIFT: Just 4
DRIFT: Just 4
DRIFT: Just 5
DRIFT: Just 5
DRIFT: Just 6
DRIFT: Just 7
DRIFT: Just 8
DRIFT: Just 9
DRIFT: Just 10
DRIFT: Just 11
*Node.js 7.10.0:*
DRIFT: Nothing
DRIFT: Just 2
DRIFT: Just 5
DRIFT: Just 6
DRIFT: Just 10
DRIFT: Just 17
DRIFT: Just 22
DRIFT: Just 27
DRIFT: Just 32
DRIFT: Just 37
DRIFT: Just 40
DRIFT: Just 43
DRIFT: Just 45
DRIFT: Just 51
DRIFT: Just 54
DRIFT: Just 56
*Node.js 8.0.0:*
DRIFT: Nothing
DRIFT: Just 4
DRIFT: Just 6
DRIFT: Just 7
DRIFT: Just 8
DRIFT: Just 12
DRIFT: Just 14
DRIFT: Just 14
DRIFT: Just 14
DRIFT: Just 20
DRIFT: Just 23
DRIFT: Just 25
DRIFT: Just 25
DRIFT: Just 30
DRIFT: Just 32
DRIFT: Just 37
There are a number of ways I can mitigate the issue but I am wondering
where is the most pragmatic place for this to be fixed?
*The given platform?*
This would mean Safari, Node and any other inconsistent platforms fix this.
This seems like it is extremely unlikely to happen. For example this is a
known issue across multiple node version that was raised almost a year ago
with no fix yet (https://github.com/nodejs/node/issues/7346).
*Elm's Core Time module?*
This would give consistent behaviour for all consumers no matter what
platform they are running on. I have made a proof of concept that enables
this so it is possible. I'm just not sure if this is a change that aligns
with the intension of the module.
*My application?*
There are a number of things I could do within my application to mitigate
the issue (which I am already doing). For example I could track the drift
and counter it in my subscription. My only reservation here is that others
will face the same issue.
--
You received this message because you are subscribed to the Google Groups "Elm Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Elm Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.