نمایش نتایج 1 تا 11 از 11

نام تاپیک: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

  1. #1

    با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    سلام دوستان ، نرم اقزاری که طراحی کردم در حالت عادی بین 70 تا 90 مگابایت از Ram رو به خودش اختصاص میده حتی وقتی لیست های سنگینی رو تو Grid به کاربر نمایش میدم فضا از این بیشتر نمیشه اما وقتی یه گزارش رو که با Stimul طراحی کردم فراخوانی میکنم فضای مورد استفاده به 120 و حتی گاهی 300 مگابایت هم میرسه ، آیا دوستان هم همین مشگل رو دارند؟
    این جرو خصوصیات Stimul هستش؟

  2. #2

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    کسی از دوستان که از Stimul Report استفاده می کنه ، محبت میکنه موقع اجرای برنامه میزان فضای مصرفی برنامه اش رو اندازه گیری کنه به من بگه؟

  3. #3
    کاربر دائمی آواتار in_chand_nafar
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    www.NikAmooz.com
    پست
    466

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    دوست عزیز این برنامه از لحاظ قابلیت خوبه اما از لحاظ Performance بسیار بد عمل می کند
    به این لینک سر بزن

  4. #4
    کاربر دائمی آواتار saeed_sho
    تاریخ عضویت
    خرداد 1390
    محل زندگی
    تهران
    پست
    890

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    گزارشه منم حدود 15 ثانیه طول میکشه تا بیاد اما کار باهاش راحته

  5. #5
    کاربر دائمی آواتار in_chand_nafar
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    www.NikAmooz.com
    پست
    466

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    ممکن در حجم رکوردهای بالا و بانک های بزرگ کم بیاره کلا کریستال ریپورت با وجود سخت بودن و... از این نرم افزار بهتر عمل می کند
    در صورت امکان با یک گزارش در یک بانک اطلاعاتی بزرگ هم در کریستال و هم در Stimul طراحی کن
    بعد با SQL Profiler نوع کوئری زدن هر دو رو بررسی کن و سرعت رو مقایسه کن حجم اطلاعاتی که از سرور به کلاینت ارسال میشه را مقایسه کن سرعت رندر شدن گزارش را مقایسه کن بعدا می فهمی کدام یکی خوب است
    Stimul , Fast report هر دو محصول برادران کمونیست روسی هستند در این زمینه هنوز جای کار دارد اما Fast Report اگر خوب بتوانی ازش استفاده کنی بهتر از کریستال و Stimul جواب می دهد

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    R0)ot -> Main();
    پست
    1,158

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    سلام دوستان عزیز.

    کمونیست ما هستیم که از تکنولوژی بقیه استفاده می کنیم سود می بیریم و پشتشونم کلی حرف می زنیم . اگر همین کمونیست ها نبودن خیلی از ماها به هیچ کدوم از سود هامون نمی رسیدیم .

    در مورد گزارش گیری می شه گفت بهترین انتخاب FastReport هست . واقعا عالیه .

    باتشکر احسان

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    یزد ، بلوار امامزاده جعفر علیه السلام
    پست
    41

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    لطفا بفرمایید چه طوری می توان میزان رم مصرف شده را بعد از بستن استیمال به حال عادی برگرداند ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟

  8. #8
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    من با خیلی از این نرمافزار ها کار کردم.
    تا اینکه سازنده یکی از اونها چند ماه قبل به من یه پیشنهاد جالب داد و گفت که خودش هم داره همین کار رو میکنه.
    tomasz kubakki سازنده monoreports
    پیشنهادشون طراحی چاپ با html بود و رندر گرفتن با یه انجین مثل phantomjs
    اینها نمونه کدهای من هستن:

    Stream configStream = fileInterfaceInstance.Read ("PhantomJS Prints" + System.IO.Path.DirectorySeparatorChar + "Configuration.xml");
    System.Xml.Serialization.XmlSerializer xmls = new System.Xml.Serialization.XmlSerializer (typeof(PrintConfiguration[]), new []{ typeof(PrintConfiguration) });
    PrintConfiguration[] config = (PrintConfiguration[])xmls.Deserialize (configStream);
    foreach (var c in config) {
    configs.Add (c.Name, c);
    }


    public override IAsyncResult BeginPrint (string name, System.Collections.Generic.IDictionary<string, SortedSet<DCBase>> tables, System.Collections.Generic.IDictionary<string, object> parameters, AsyncCallback asyncCallback, object asyncState)

    string html;
    if (!managers.ContainsKey (name)) {
    if (!configs.ContainsKey (name)) {
    throw new ArgumentException ("no tempelate defined for {0}", name);
    } else {
    var conf = fileInterfaceInstance.Read ("PhantomJS Prints" + System.IO.Path.DirectorySeparatorChar + configs [name].Path);
    Console.WriteLine ("conf:{0}", conf.Length);
    managers.Add (name, new PrintManager (conf));
    }
    }
    html = managers [name].Compile (tables, parameters);
    Console.WriteLine ("html:{0}", html.Length);
    string binaryName;
    if (System.Environment.OSVersion.Platform == PlatformID.Win32NT)
    binaryName = "phantomjs.exe";
    else
    binaryName = "phantomjs";
    string dateTime = DateTime.Now.ToString ().Replace ("/", "_").Replace (":", "_");
    Guid id = Guid.NewGuid ();
    //string htmlFileName = "temp" + Path.DirectorySeparatorChar + "PhantomJS Print - " + name + " - " + dateTime + " - " + id.ToString () + ".html";
    string pdfFileName = "temp" + Path.DirectorySeparatorChar + "PhantomJS Print - " + name + " - " + dateTime + " - " + id.ToString () + ".pdf";
    //htmlFileName.Replace (" ", "");
    //pdfFileName.Replace (" ", "");
    //Console.WriteLine ("html:{0}", htmlFileName);
    Console.WriteLine ("pdf:{0}", pdfFileName);
    //System.IO.File.WriteAllText (htmlFileName, html, System.Text.Encoding.Unicode);
    string arguments = "\"PhantomJS Prints/stdrasterize.js\" " + (parameters.ContainsKey ("Orientation") && Equals (parameters ["Orientation"], "landscape") ? "297mm*210mm" : "210mm*297mm") + " 1cm";
    Console.WriteLine ("Arguments: {0}", arguments);
    Process p = new Process ();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.FileName = binaryName;
    p.StartInfo.Arguments = arguments;
    p.StartInfo.ErrorDialog = false;
    p.StartInfo.RedirectStandardError = true;
    p.Start ();
    p.StandardInput.WriteLine (html);
    p.StandardInput.Flush ();
    p.StandardInput.Close ();
    p.WaitForExit ();
    var pdfStream = System.IO.File.OpenWrite (pdfFileName);
    p.StandardOutput.BaseStream.CopyTo (pdfStream);
    pdfStream.Close ();



    public string Compile (System.Collections.Generic.IDictionary<string, SortedSet<DCBase>> tables, System.Collections.Generic.IDictionary<string, object> parameters)
    {
    var StaticParameters = CreateParameters ();
    StringBuilder sb = new StringBuilder (printData, printData.Length * 2);
    foreach (var kvp in StaticParameters)
    sb.Replace ("$$" + kvp.Key + "", System.Web.HttpUtility.HtmlEncode (kvp.Value));
    foreach (var kvp in parameters)
    sb.Replace ("$$" + kvp.Key + "", System.Web.HttpUtility.HtmlEncode (kvp.Value.ToString ()));
    string report = sb.ToString ();
    foreach (var tp in tables) {
    bool d = true;
    while (d) {
    int tableBeginOffset = report.IndexOf ("<$" + tp.Key + ">", StringComparison.Ordinal);
    int tableEndOffset = report.IndexOf ("</$" + tp.Key + ">", StringComparison.Ordinal);
    if (tableBeginOffset == -1) {
    d = false;
    continue;
    }
    if (tableEndOffset == -1) {
    d = false;
    continue;
    }
    string tableFields = report.Substring (tableBeginOffset, tableEndOffset - tableBeginOffset);
    StringBuilder TBuilder = new StringBuilder ();
    foreach (var row in tp.Value) {
    string RowText = tableFields;
    foreach (var column in row.Columns) {
    RowText.Replace ("<$" + column + "/>", System.Web.HttpUtility.HtmlEncode (row.GetValue (column).ToString ()));
    }
    TBuilder.Append (RowText);
    }
    report = report.Substring (0, tableBeginOffset) + TBuilder + report.Substring (tableEndOffset + ("</$" + tp.Key + ">").Length);
    }
    }
    return report;
    }

    var page = require('webpage').create(),
    system = require('system'),
    size;
    fs = require('fs');
    size = system.args[1].split('*');
    page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: system.args[2] } : { format: system.args[1], orientation: 'portrait', margin: system.args[2] };
    page.content = system.stdin;
    window.setTimeout(function() {
    page.render(system.stdout, { format: 'pdf' });
    phantom.exit();
    }, 1000);

    نمونه فایل پرینت:
    b3.phantom.zip
    خیلی خلاصه, راحت شدم.
    هر چیزی رو که نمیدونید چیه با DataRow/DataTable/... عوض کنید.

  9. #9
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    تست شده با .net 3.5 .net 4 .net 4.5 mono/.net 4 mono/.net4.5 .net 4.5.1 mono/.net4.5.1 در ویندوز و لینوکس.

  10. #10
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    سلام
    یعنی با استفاده از xml یه صفحه پرینت طراحی کردین !؟
    بعد اطلاعات به اون صفحه ارسال میشه (از طریق دیتاتیبل یا ...)

  11. #11
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: با فراخوانی گزارش Stimul فضای مورد استفاده از Ram چند برابر میشه ؟!!!

    نقل قول نوشته شده توسط ghasem110deh مشاهده تاپیک
    سلام
    یعنی با استفاده از xml یه صفحه پرینت طراحی کردین !؟
    بعد اطلاعات به اون صفحه ارسال میشه (از طریق دیتاتیبل یا ...)
    html, بله.و خروجی pdf میده که میتونید با چند خط دستور دیگه با هر برنامه ای که روی سیستم نصب هست مثل adobe reader یا evince چاپ کنید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •