I think it is set-frame-position's reason, posframe have positon cache, so if
posframe's position no
change, it will fast, if position changed, it will show half second lags
(require 'posframe)
(posframe-show "test" :string "aaaaaaaa"
:background-color "red")
```
(setq child-frame
(with-current-buffer "test"
posframe--frame))
(setq p nil)
(defun test ()
(setq p (if (equal p '(10 10))
'(100 100)
'(10 10)))
(set-frame-position child-frame (car p) (cadr p)))
(benchmark 5 '(test))
```
"Elapsed time: 1.063156s"