ForLoopマクロを関数あるいはK2Nodeで実装したい

こんにちは!私は現在ForLoopノードを高速化することはできないかと考えています。
C++で実装してしまえば良いというのは承知の上で質問させていただきますが、ForLoopノードを関数あるいはK2Nodeで実装する方法はありませんでしょうか?
ヒントを持っている方がいましたら教えていただけると嬉しいです。
よろしくお願いします。

Hello!!! I am currently wondering if it is possible to speed up the ForLoop node.
I know that I should just implement it in C++, but I would like to ask if there is any way to implement the ForLoop node in a function or K2Node?
If anyone has any hints, I would appreciate it if you could let me know.
Thank you.

ちょうど同じことを考えて調べていたところ、この質問を見つけて、そしてK2NodeでForEachを実装した方を発見しました。

下記ページの最下部にGitHubのリンクが載っています。

https://www.gamedev.net/tutorials/programming/engines-and-middleware/improving-ue4-blueprint-usability-with-custom-nodes-r5694/

コンパイルするには、モジュール名とインクルードファイルのパスを自分の環境に合わせて修正する必要がありました。
またCoreTechK2Utilities.cppの107行目にエラーが出ていましたが、とりあえずコメントアウトして対処しました(これでも正しく動いているような気がしますが、もし適切な対処方法がわかれば教えていただきたいです)。

そして目的の高速化についてですが、100万個のIntの配列の合計を計算するBPの実行時間をマクロ版のForEachとK2Node版のForEachで比較してみました。

image

結果は、エディタではK2Node版の方が10%程度早く、ShippingではK2Node版の方が5%程度早いという、割と微妙な感じでした…ご参考までに。

There is, which is probably what suramaru is referring to, however that sort of thing is probably not really going to provide a huge speed up. The results of a nativized for-loop node are pretty much the same as the macro by the time to get to a running game.
It’s the body of the loop that’s the primary contributor to the performance. Shifting the entire loop to native could be an option, but you could just have an algorithmic problem which is impossible to answer without seeing the code that’s the problem.

How do you even know this is a problem? have you actually profiled it?

Sorry about that compile error. I forgot that I had an engine modification to get to the Delegate Pin more easily.

ご返信ありがとうございます!
どのくらい変わるのかが気になっていたのですが、5%はかなり微妙ですね…
もし必要になった時には参考にさせていただきます。
ありがとうございました!