MyCholesky and Sym +def generator

RandomSymDefThm144[n_]:= Module[{M},
M= RandomReal[{-1,1},{n,n}];
M=Transpose[M].M;
M=0.5*(M+Transpose[M])
]

MyCholesky[A_]:=Module[
{AA,s,R,n=Length[A]},
(* This is the 2nd outerprodduct version from before *)
AA=A;R=0*A;
Do[
R[[i,i]]=(Sqrt[AA[[i,i]]]);
s=AA[[i,i+1;;-1]]/R[[i,i]];
R[[i,i+1;;-1]]=s;
AA[[i+1;;-1,i+1;;-1]]-=Outer[Times, s,s],
{i,1,n}];
R
]

A little bit of testing and timing.

n=12;
A=RandomSymDefThm144[n];
MyR=MyCholesky[A];
R=CholeskyDecomposition[A];
Norm[R-MyR]

MyTimes=Table[
n=Floor[ 12 (1.5^p)];
A=RandomSymDefThm144[n];
{n, Timing[MyCholesky[A];][[1]]},
{p, 3, 10}];
BuiltTimes=Table[
n=Floor[ 12 (1.5^p)];
A=RandomSymDefThm144[n];
{n, Timing[CholeskyDecomposition[A];][[1]]},
{p, 5, 16}];

CubeFn[n_]:=(0.001/(50^3))(n^3);
ListLogLogPlot[{MyTimes,BuiltTimes, {{50,CubeFn[50]},{5000,CubeFn[5000]}}},
PlotStyle->{Red, Blue,Green},
Mesh->All,
Joined->True,
Mesh->All,
GridLines->Automatic,
Frame->True]

A= Import["http://math.nist.gov/MatrixMarket/data/Harwell-Boeing/bcsstruc1/bcsstk04.mtx.gz"]
Timing[MyR=MyCholesky[A];]
Timing[R=CholeskyDecomposition[A];]
{MatrixPlot[A],MatrixPlot[MyR]}

A= Import["http://math.nist.gov/MatrixMarket/data/Harwell-Boeing/bcsstruc2/bcsstk14.mtx.gz"]
Timing[MyR=MyCholesky[A];]
Timing[R=CholeskyDecomposition[A];]
{MatrixPlot[A],MatrixPlot[MyR]}