提速的余地不大了,用Part和Span就很直接的,即使在大量的循环中也不会成为速度瓶颈,
为了提升很有限的一点速度,用其他可读性不太好的代码反而会得不偿失
s1 = {1, 2, 3, 4, 5};
Do[Table[s1[[-i ;;]], {i, Length@s1 - 1, 1, -1}], {10^5}] // Timing
Do[Table[s1[[i ;;]], {i, 2, Length@s1}], {10^5}] // Timing
Do[NestList[Rest, Rest@s1, Length@s1 - 2], {10^5}] // Timing
s1 = RandomInteger[1000, {2 10^4}];
Table[s1[[-i ;;]], {i, Length@s1 - 1, 1, -1}]; // Timing
Table[s1[[i ;;]], {i, 2, Length@s1}]; // Timing
NestList[Rest, Rest@s1, Length@s1 - 2]; // Timing(*这个2G内存就不够用了*)
为了提升很有限的一点速度,用其他可读性不太好的代码反而会得不偿失
s1 = {1, 2, 3, 4, 5};
Do[Table[s1[[-i ;;]], {i, Length@s1 - 1, 1, -1}], {10^5}] // Timing
Do[Table[s1[[i ;;]], {i, 2, Length@s1}], {10^5}] // Timing
Do[NestList[Rest, Rest@s1, Length@s1 - 2], {10^5}] // Timing
s1 = RandomInteger[1000, {2 10^4}];
Table[s1[[-i ;;]], {i, Length@s1 - 1, 1, -1}]; // Timing
Table[s1[[i ;;]], {i, 2, Length@s1}]; // Timing
NestList[Rest, Rest@s1, Length@s1 - 2]; // Timing(*这个2G内存就不够用了*)