Да, есть небольшое влияние на производительность. Регулярный компилятор не делает никакой оптимизации. Он просто заменяет оператор + на вызовы метода StringBuilder
. Например. если у вас есть String s = "x" + "y" + "z";
, его можно заменить на String s = new StringBuilder().append("x").append("y").append("z");
перед компиляцией в байт-коды. Но здесь нет реальной оптимизации. Он не заменяет его на String s = "xyz";
перед созданием байтового кода. Я не уверен, что компилятор JIT оптимизирует его, прежде чем генерировать собственные инструкции процессора. Но даже если это так, это во время выполнения, что приводит к небольшому результату.
Лично я хотел бы больше заботиться о элегантности и удобочитаемости, если они приходят за небольшую производительность.
У вас есть весь код для открытия файла, написания верхнего и нижнего колонтитула и повторного закрытия файла, и все это в цикле for итерации по записям, возвращаемым из запроса. На самом деле, если у вас более одной записи, он должен продолжать открывать файл, перезаписывать содержимое новой записью, включая верхний и нижний колонтитулы, и закрывать файл.
Вам нужно открыть файл один раз, написать заголовок, затем перебрать записи и записать каждую, а затем, наконец, написать нижний колонтитул и закрыть файл. Код может выглядеть примерно так:
with open("c:\\test\\test.txt", "w") as feed_file:
feed_file.write("Name" + "\t" + "Age" )
for record in cur.fetchall():
filteredrecord = (record[0] + "\t" + record[1])
print(filteredrecord)
feed_file.write("\n" + (filteredrecord))
feed_file.write("\n" + "ENDOFFILE")
Обратите внимание, что вам не нужно явно закрывать файл при использовании структуры with
.