This example was first published in the LabVIEW forum, but I decided to give it a more permanent home here is the Develope Zone Community.
Given a 2D array, there are 8 symmetry related transformations possible:
(There are probably more scientific words for some of those, but the picture below should show what they mean)

Version 1 tries to avoid unecessary extra data copies in memory by doing things in place as much as possible. This is important for performance on large arrays. There is no guarantee that everything is fully optimized, so if you are worried about performance and think you have a better idea, please do some benchmarks and let me know if you found an improvement.
Version 2 uses simpler code at the cost of a few more buffer allocations for the 2D array (let's not count allocations for 1D arrays, they are much smaller). Should be sufficient for typical 2D arrays. To process very large inputs, detailed benchmarking would need to be done to determine the best solution.
Newer LabVIEW versions also support the parallel FOR loop. Some of the transformations are suitable for parallelization, potentially boosting speed. Again benchmarks would need to be done to weight the impact of the parallelization overhead.
Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.