Problem: you want to set protected properties of an object, or a set of objects as efficiently and without much convention as possible.
Solution in 5.4 is the "Anonymous Proxy", see the by-anonymous-proxy.php file.
How fast is it? Given around 70000 objects with 10 properties each on my system here are the results, (the number next to the title is the peak memory usage):
$ time php by-method.php; \
time php by-reflection.php; \
time php by-proxy.php; \
time php by-closure-proxy.php; \
time php by-anonymous-proxy.php
By Method: 102015224
real 0m1.311s
user 0m1.265s
sys 0m0.043s
By Reflection 102029416
real 0m1.337s
user 0m1.284s
sys 0m0.052s
By Proxy 102023728
real 0m0.629s
user 0m0.582s
sys 0m0.044s
By Closure Proxy 102018288
real 0m0.940s
user 0m0.892s
sys 0m0.047s
By Anonymous Proxy 102024992
real 0m1.149s
user 0m1.094s
sys 0m0.053s