Cycles: Extra tweaks to performance of header expansion
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 3 Aug 2017 05:53:18 +0000 (07:53 +0200)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 3 Aug 2017 06:07:06 +0000 (08:07 +0200)
commit0d01cf4488b9b484de60a687f0e781e789962422
tree13a983b964987f5948412018029c4805ab14988c
parentc6c49d90dc6856f978e15d80673c6211dcba6fd9
Cycles: Extra tweaks to performance of header expansion

Two main things here:

1. Replace all unsafe for #line directive characters into a single loop,
   avoiding multiple iterations and multiple temporary strings created.

2. Don't merge token char by char but calculate start and end point and
   then copy all substring at once.

This gives about 15% speedup of source processing time. At this point
(with all previous commits from today) we've shrinked down compiled
sources size from 108 MB down to ~5.5 MB and lowered processing time
from 4.5 sec down to 0.047 sec on my laptop running Linux (this was a
constant time which Blender will always spent first time loading kernel,
even if we've got compiled clbin).
intern/cycles/util/util_path.cpp