Does using Member Renamer have any performance impact because it will be doing it via Reflection: https://github.com/lunet-io/scriban/blob/master/doc/runtime.md#member-renamer
Scriban with or without Renamer is using reflection to get the public properties and methods.
Renamer is small step in its processing.
Have a look to the Renamer in the source code.
I did a benchmark using the smart BenchmarkDotNet
for the following template
<ul id='products'>
{% for product in products %}
<li>
product.name: <h2>{{ product.name }}</h2>
product.price: Only {{ product.price }}
product.description: {{ product.description | truncate: 15 }}
</li>
{% endfor %}
</ul>
The size of data: List<Product> Products
is 500
The result of benchmark:
Method | Mean | Error | StdDev | Ratio |
-------------------------- |---------:|----------:|----------:|------:|
'Scriban with Renamer' | 3.125 ms | 0.0617 ms | 0.0711 ms | 1.00 |
| | | | |
'Scriban without Renamer' | 3.070 ms | 0.0388 ms | 0.0363 ms | 1.00 |
// * Hints *
Outliers
TemplateManager.'Scriban with Renamer': Clr -> 1 outlier was removed
// * Legends *
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
Ratio : Mean of the ratio distribution ([Current]/[Baseline])
1 ms : 1 Millisecond (0.001 sec)
As you see the difference (in case of Renamer) is about: 0.055 ms
There is approximately no difference
Conclusion: No effect in case of Renamer
Note: The numbers in this benchmark may be different in other machines based on CPU/memory/...etc, but the conclusion is the same.