Example to reset values in a a lower triangular matrix. run it see the time different.
proc iml;
%let n=600;
r=j(&n,&n,1);
start idx(X);
n=nrow(x);
i=shape(1:n*n,n,n);
return( loc(i`<i) );
finish;
time=time();
r[idx(r)]=100;
time2=time()-time;
print time2;
if r<=6 then print r;
time=time();
p = ncol(R);
do i=1 to p-1;
idx = idx||(((i+1):p)-1)*p + i;
end;
r[idx]=100;
time2=time()-time;
print time2;
if r<=6 then print r;
quit;