Мне нужно скопировать файлы из одной директории в другую, в зависимости от наличия имени файла в таблице базы данных SQL.Самый быстрый способ скопировать файлы из одной директории в другую
Для этого я использую следующий код:
using(SqlConnection connection = new SqlConnection("datasource or route"))
{
connection.Open();
using(SqlCommand cmd = new SqlCommand("SELECT idPic, namePicFile FROM DocPicFiles", connection))
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader != null)
{
while (reader.Read())
{
//picList IS AN ARRAY THAT Contains All the files names in a directory
if (picList.Any(s => s.Contains(reader["namePicFile"].ToString())))
{
File.Copy("theFile in the Directory or array picList", "the destiny directory"+ ".jpg", false)
}
}
}
}
}
Есть ли способ, что это может быть сделано за меньшее время? Для этого требуется 1 час, для 20,876 записей.
Сколько этого времени используется File.Copy и сколько используется для циклического поиска и поиска имен? Если вы не измеряете, вы не можете понять, где проблема, и искать жизнеспособные (и существующие) решения. – Steve
Разделите свой метод на один, который возвращает список, содержащий все файлы, которые вы хотите скопировать, затем отправьте этот список в другой метод который выполняет копирование. Затем вы можете измерить оба метода и выяснить, где узкое место. –
Kvam