예제 #1
0
        public void ParseHTMLSpec()
        {
            string html;

            DateTime start = DateTime.Now;

            System.GC.Collect();
            var GC_MemoryStart = System.GC.GetTotalMemory(true);

            html = Support.GetFile("csquery\\csquery.tests\\resources\\HTML Standard.htm");
            for (int i = 0; i < iterationsLoad; i++)
            {
                Dom = CQ.Create(html);
            }
            var GC_MemoryEnd = System.GC.GetTotalMemory(true);

            DateTime loaded = DateTime.Now;

            int divSpan = 0;

            int randomLength = Dom.Select("p").Eq(22).RenderSelection().Length;

            var equation = Equations.CreateEquation <int>("2x+2");

            for (int i = 0; i < iterationsSelect; i++)
            {
                // todo: cache equations once parsed - should speed this up immenseley
                CQ sel = Dom.Select("div:nth-child(2n+1)");
                //CsQuery sel = Dom.Select("div span");

                // get length to force it to iterate through everything
                int len = sel.Length;

                //equation.SetVariable("x", 12);
                // var y = equation.Value;
            }

            CQ selFinal = Dom.Select("div span");

            divSpan = selFinal.Length;

            DateTime selected = DateTime.Now;


            for (int i = 0; i < iterationsClone; i++)
            {
                CQ c = Dom.Clone();
                Assert.AreEqual(divSpan, Dom.Select("div span").Length, "Clone wasn't equal in # of elements");
                string cloneContents = c.Select("p").Eq(22).RenderSelection();
                Assert.AreEqual(randomLength, cloneContents.Length, "Some random text was right");
            }
            DateTime done     = DateTime.Now;
            TimeSpan loadTime = loaded - start;

            string result = Dom.Select("div").Length + " div elements";

            result += ", " + Dom.Select("*").Length + " total elements";
            result += ", " + loadTime.TotalSeconds / iterationsLoad + " seconds to load domain";
            result += ", " + (selected - loaded).TotalSeconds / iterationsSelect + " seconds to perform select 'div span' - " + Dom.Select("div span").Length + " elements";
            result += ", " + (done - selected).TotalSeconds / iterationsClone + " seconds to cloning";
            result += ", " + (GC_MemoryEnd - GC_MemoryStart) + " bytes used by object";
            //Debug.WriteLine(result);
            Assert.Pass(result);
        }