c# string replace performance