Using StringIO as string buffer is slower than using list as buffer.
When is StringIO used?
from io import StringIO
def meth1(string):
    a = []
    for i in range(100):
        a.append(string)
    return ''.join(a)
def meth2(string):
    a = StringIO()
    for i in range(100):
        a.write(string)
    return a.getvalue()
if __name__ == '__main__':
    from timeit import Timer
    string = "This is test string"
    print(Timer("meth1(string)", "from __main__ import meth1, string").timeit())
    print(Timer("meth2(string)", "from __main__ import meth2, string").timeit())
Results:
16.7872819901
18.7160351276
 
     
     
     
     
     
    