Animated text body drops Playback FPS by half
The issue was with unselecting the text object:
text.select_set(False) 

testing if the text object is selected, to then unset it solved the issue.
if text.select_get():
    text.select_set(False) 

Full fixed code:
import bpy
from bpy.app.handlers import persistent
import time

@persistent
def update_frame(scene,context):
    tic = time.time()
    time_t = bpy.context.scene.frame_current
    print(time.time()-tic)
    if 'Camera' in bpy.data.objects.keys() and time:
        tic = time.time()
        Camera = bpy.data.objects.get('Camera')
        size = 0.03
        coords = (-0.35,0.17,-1)
        children_name  = [children.name for children in  Camera.children]
        print(time.time()-tic)
        if &quot;BlenderNC_time&quot; not in children_name:
            tic = time.time()
            bpy.ops.object.text_add(radius=size)
            text=bpy.context.object
            text.name=&quot;BlenderNC_time&quot;
            text.parent = Camera
            text.location = coords  
            print(time.time()-tic)
        else:
            tic = time.time()
            childrens = Camera.children
            text = [child for child in childrens if child.name==&quot;BlenderNC_time&quot;][-1]
            print(time.time()-tic)
        tic = time.time()
        text.data.body = str(time_t)
        if text.select_get():
            text.select_set(False) 
        print(time.time()-tic )

        
handlers = bpy.app.handlers
        
def registerBlenderNC():
    bpy.types.Scene.update_frame = update_frame
    handlers.frame_change_pre.append(bpy.types.Scene.update_frame)
    
    
def unregisterBlenderNC():
    del bpy.types.Scene.update_frame
    handlers.frame_change_pre.remove(update_frame) 
    
registerBlenderNC()