What do you mean by "high number of points"? If you have hundreds to thousands, even without update, the map would get bad responsiveness on most computers.
As for your refresh rate, please realize that 30 milliseconds is just about twice the common browser / computer display refresh rate (60 Hz => 16.7 ms). You can still do many things in this interval of course, but the browser may start struggling if your updates involve several re-paints (forced displays).
Furthermore, Leaflet uses some smooth animations by default, with a duration of 250 ms I think. Disabling these animations may help in your case. Try setting
L.DomUtil.TRANSITION = false just after loading Leaflet script.
As for GPU usage, I think map panning (translation) and objects translations should already use GPU on browsers that support this feature?
Not talking about updating the data, you may be interested in Leaflet MaskCanvas plugin to replace all your points by a tiled canvas.
As for loading only points that are in the current user view port, this is what Web Feature Services basically do: use Leaflet
map.getBounds().toBBoxString() to create a request which specifies the view bounds, and the web server will send only the data that is contained within these bounds. Then at every map navigation (zooming, panning), perform a new request, so that you get receive new data for the new view bounds.
A few demos for you to play with and see what happens with different numbers of markers, icons (image or div), and very simple set-up. All these use HW-accelerated (GPU) transforms.
Depending on your computer (CPU and GPU, memory), you can see a little lag and flickering of the divs while panning around.