اشتراکها
A little fun experiment where you can color a website mockup by dragging and dropping a color droplet from a palette. Demo
اشتراکها
مشکلات SQLite
سطح لاگ کردن را باید تنظیم کنید: (نکتهی کند شدن برنامه با تنظیم سطح لاگ به Information را هم مطالعه کنید)
logging.AddDbLogger(); // You can change its Log Level using the `appsettings.json` file -> Logging -> LogLevel -> Default
نظرات اشتراکها
بررسی وضعیت فعلی پروژه Roslyn
کدهای IL درکی از پروسسور ندارند. به همین علت انتقال پذیر هستند. کار JIT هست که بسته به معماری سیستم، native machine instructions را تولید کند. به همین جهت است که کدهای IL شما (بسته بندی شده در فایلهای DLL یا EXE دات نت) به راحتی بر روی سیستمهای 64 و 32 بیتی اجرا میشوند و روی هر کدام از این سیستمها نیز رفتاری 64 یا 32 بیتی خواهند داشت. JIT هست که کدهای ماشین مخصوص پروسسور جاری را تولید میکند. JIT کامپایلر فعلی دات نت برای تولید سریع کد و نمایش سریع برنامههای دات نت طراحی شدهاست. اما همین سرعت بالای تولید کدها، الزاما به تولید کدهای بهینهای ختم نشدهاست. خصوصا در برنامههای سمت سرور اصلا اهمیتی ندارد که زمان start up یک برنامه وب چقدر است. کسی متوجه آن نخواهد شد چون در طول عمر برنامه وب تا ریاستارت بعدی آن، فقط یکبار رخ میدهد. ضمنا اکثر سرورهای امروز X64 هستند (در ویندوزهای سرور جدید، تولید نسخه 32 بیتی کلا کنار گذاشته شدهاست) و به این ترتیب میشود JIT کامپایلری بهینه سازی شده برای صرفا پروسسورهای 64 بیتی تولید کرد و ... اینکار در حال انجام است. نتیجه نمونه آزمایشی آن تا الان حداقل 30 درصد بهبود سرعت برنامهها بودهاست.
مطلبی را دیروز در وبلاگ آقای صحرایی دیدم در مورد بهبود کارآیی برنامهها و سایتهای ASP.Net ، که یکی از موارد آن "فاصله بین تگ ها را تا حد ممکن از بین ببرید" بود.
برای پیاده سازی آن به صورت زیر میتوان عمل کرد:
using System.Text.RegularExpressions;
//حذف فاصلههای خالی
private static readonly Regex REGEX_BETWEEN_TAGS = new Regex(@">\s+<", RegexOptions.Compiled);
private static readonly Regex REGEX_LINE_BREAKS = new Regex(@"\n\s+", RegexOptions.Compiled);
protected override void Render(HtmlTextWriter writer)
{
using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter()))
{
base.Render(htmlwriter);
string html = htmlwriter.InnerWriter.ToString();
html = REGEX_BETWEEN_TAGS.Replace(html, "> <");
html = REGEX_LINE_BREAKS.Replace(html, string.Empty);
writer.Write(html.Trim());
}
}
یا روش دیگر اعمال آن سفارشی ساختن ASP.NET pipeline با کمک Response.Filter آن است. برای مشاهده پیاده سازی آن لطفا به مقاله زیر مراجعه بفرمائید:
برای بهینه سازی قسمت اعمال regular expressions آن میتوان به مقاله "چگونه Regex سریعتری داشته باشیم؟" مراجعه کرد.