Look at the "update" and "draw" values (time representation). For the desktop build values of 1ms or lower are good. In the screenshot I have "update" of 8.4ms, which means that there is something to optimize in the game logic (update() functions). Draw is for rendering.
Then you can comment out the code with the logic or the rendering and compare the values to the previous ones.
When the sum of the values is over 1/60 seconds (about 16ms), it's impossible for the engine to render at 60 FPS on this PC.

On my machine I'm getting about 1.7ms per update() on a debug Neko build on Ubuntu 16.04, with an i5-2410M CPU at 2.30GHz. On this same build I get about 4.5ms per draw(). So update() is not the bottleneck in my project, it's draw().

On the same machine, with a debug HTML5 build, I get about the same...? But the FPS reading still frequently drops under 60. Now I'm confused. I do get higher CPU usage, though, and my fan does spin up whenever I play my game in-browser (and your game, too, for that matter.)

Then at the time of the FPS drops your timings were more than 16 ms apparently?
Try to move your "blocks" forever, like a benchmark.
There is also a dedicated tool for Haxe profiling called hxScout, but it didn't use it much.