Hi David,
One way to benchmark the performance of several functions.
Define the functions
replace1 = # /. x_ /; x > 0 :> 0 &;
replace2 = Replace[#, x_ /; x > 0 -> 0, {1}] &;
if = If[# > 0, 0, #] & /@ # &;
clip = Clip[#, {-Infinity, 0}] &;
Verify that one function returns the expected result
input = {-12, -3, 0, 1, 4, -23};
replace1@input
(* {-12, -3, 0, 0, 0, -23} *)
Verify that they all return the same result
replace1[#] == replace2[#] == if[#] == clip[#] &@input
(* True *)
Generate test data
data = Table[RandomReal[{-200, 200}, (n - 1)*1000], {n, 1, 101}];
Generate and plot the timing
funcs = {replace1, replace2, if, clip};
timings = Table[First@Timing[f@d], {f, funcs}, {d, data}];
ListLinePlot[timings, PlotLegends -> funcs]
ListLogPlot[timings, Joined -> True, PlotLegends -> funcs]

