Ускорить работу с файлом - C#
Формулировка задачи:
Программа создает sitemap.xml файл для индексации поисковиками.
Работает ну очень долго. Помогите ускорить. a = примерно 25000
public static void Main(string[] args)
{
using (DB_A05F1F_Frol4icContext db = new DB_A05F1F_Frol4icContext())
{
IEnumerable<string> TitleIDs = new string[] { }; //Enumerable.Empty<string>();
TitleIDs = db.TitleIds.Select(x => x.TitleId);//.ToList();
IEnumerable<string> TitleIDs2 = new string[] { };
TitleIDs2 = TitleIDs2.Concat(new[] { "<?xml version = "1.0" encoding = "UTF-8" ?>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<urlset xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9">" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/Account/Login</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/account/login?ReturnUrl=%2FAccount%2FSettings%3FName%3D</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/Home/Contact</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/Account/Register</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/Account/ForgotPass</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
foreach (var a in TitleIDs)
{
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=en" + "</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=de" + "</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=fr" + "</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=es" + "</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=it" + "</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<url>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=ru" + "</loc>" });
TitleIDs2 = TitleIDs2.Concat(new[] { "</url>" });
}
TitleIDs2 = TitleIDs2.Concat(new[] { "</urlset>" });
var logPath = System.IO.Path.GetFullPath(@"D:\sitemap.xml"); //.GetTempFileName();
File.WriteAllLines(logPath, TitleIDs2);//.Create(logPath);
}
}Решение задачи: «Ускорить работу с файлом»
textual
Листинг программы
public static void Main(string[] args)
{
using (var writer = new StreamWriter(File.Create(@"D:\sitemap.xml")))
using (DB_A05F1F_Frol4icContext db = new DB_A05F1F_Frol4icContext())
{
writer.WriteLine("<?xml version = \"1.0\" encoding = \"UTF-8\" ?>");
writer.WriteLine("<urlset xmlns = \"http://www.sitemaps.org/schemas/sitemap/0.9\">");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/Account/Login</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/account/login?ReturnUrl=%2FAccount%2FSettings%3FName%3D</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/Home/Contact</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/Account/Register</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/Account/ForgotPass</loc>");
writer.WriteLine("</url>");
foreach (var a in db.TitleIds.Select(x => x.TitleId))
{
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=en" + "</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=de" + "</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=fr" + "</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=es" + "</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=it" + "</loc>");
writer.WriteLine("</url>");
writer.WriteLine("<url>");
writer.WriteLine("<loc>http://yttext.com/SubsView/SubsView?titleID=" + a + "&culture=ru" + "</loc>");
writer.WriteLine("</url>");
}
writer.WriteLine("</urlset>");
}
}