Being a builtin function1, textscan
is probably the fastest option:
result = textscan(A{1},'%f','Delimiter',';');
Here is a little benchmark to show that:
A = repmat('1; 23245675; -234567; 123456; 0',1,100000); % a long string
regexp_time = timeit(@ () regexp(A,';','split'))
strsplit_time = timeit(@ () strsplit(A,';'))
split_time = timeit(@ () split(A,';'))
textscan_time = timeit(@ () textscan(A,'%f','Delimiter',';'))
the result:
regexp_time =
0.33054
strsplit_time =
0.45939
split_time =
0.24722
textscan_time =
0.057712
textscan
is the fastest, and is ~4.3 times faster than the next method (split
).
It is the fastest option no matter what is the length of the string to split (Note the log scale of the x-axis):

1"A built-in function is part of the MATLAB executable. MATLAB does not implement these functions in the MATLAB language. Although most built-in functions have a .m file associated with them, this file only supplies documentation for the function." (from the documentation)