Some tips to speed things up.
Don’t ‘new’ things up inside a time critical loop if you can avoid it.
jagged[i] = new int;
Since your going to collect a given number of samples then write that out to the SD card declare your array size at the start of the program.
Better still do away with the whole jagged array. You have four values you are storing with each read, X, Y, Z and ticks. Just declare an array of int at the beginning of your program:
// NumberOfSamples is # of samples you read between each write to SD card
int myArray = new int[4*NumberOfSamples];
Then your sampling code woudl look like:
//approximate read time or sample freq
myArray[index] = nowTime1 - nowTime; // save time
//reading the sensor values
myArray[index+1] = xRead.Read();
myArray[index+2] = yRead.Read();
myArray[index+3] = zread.Read();
index += 4;
Now all you have is a simple array of int to write to the SD card. When you read these values into a PC you can sort the values back out into a jagged array if you wish.
Oh yes, when you are done with your samples you can use the Array Clear method to zero out yoru array (very quickly) to get ready for your next set of samples.