private static void AccessGoodData(GoodData data, int field, int iterations) { for (int x = 0; x < iterations; x++) { if (field == 0) { data.field1++; } else { data.field2++; } } }
private static void Main(string[] args) { int iterations = 100000000; var badData = new FalseSharingData(); var stopwatch = Stopwatch.StartNew(); var t1 = Task.Factory.StartNew(() => AccessFalseSharingData(badData, 0, iterations)); var t2 = Task.Factory.StartNew(() => AccessFalseSharingData(badData, 1, iterations)); Task.WaitAll(t1, t2); Console.WriteLine("BadData Access Time: {0} ms", stopwatch.ElapsedMilliseconds); var goodData = new GoodData(); stopwatch.Restart(); t1 = Task.Factory.StartNew(() => AccessGoodData(goodData, 0, iterations)); t2 = Task.Factory.StartNew(() => AccessGoodData(goodData, 1, iterations)); Task.WaitAll(t1, t2); Console.WriteLine("GoodData Access Time: {0} ms", stopwatch.ElapsedMilliseconds); Console.ReadLine(); }
public ReceiveInitData() { goodInfo = new GoodData(); jxbAngleInfo = new JXBAngleData(); simulateInfo = new SimulateData(); }
public static async Task GetFromWebAsync( ApplicationContext context, Good good, string accessKey = "76f28ee177457757896164a36c9e9a2c", string proxyLocation = "US", string renderJs = "1") { Random locationRnd = new Random(); proxyLocation = Enum.GetName(typeof(locations), locationRnd.Next(1, 27)); var uriBuilder = new UriBuilder("https://api.scrapestack.com/scrape"); var query = HttpUtility.ParseQueryString(uriBuilder.Query); query["access_key"] = accessKey; query["proxy_location"] = proxyLocation; query["render_js"] = renderJs; query["url"] = good.ProductDetailUrl.Replace("ru.", "").Replace("eu.", ""); //query["url"] = good.ProductDetailUrl.Contains("wwww.") ? // good.ProductDetailUrl.Replace("ru.", "").Replace("eu.", "").Replace("wwww.", "www2.") : // good.ProductDetailUrl.Replace("ru.", "").Replace("eu.", "").Replace("https://", "https://www2."); //query["url"] = good.ProductDetailUrl.Replace("ru.", "").Replace("eu.", ""); //query["url"] = good.ProductDetailUrl.Replace("eu.", "ru."); uriBuilder.Query = query.ToString(); string url = uriBuilder.ToString(); string resp = await client.GetStringAsync(url); if ( !String.IsNullOrEmpty(resp) && !resp.Contains("<meta name=\"ROBOTS\" content=\"NOINDEX, NOFOLLOW\">") && !resp.Contains("{\"success\":false,\"error") ) { good.IsWebDownloaded = true; GoodData goodData = await context.GoodDatas.FirstOrDefaultAsync(g => g.Good.Id == good.Id); if (goodData != null) { goodData.Response = resp; goodData.CreationDate = DateTime.Now; goodData.Url = url; goodData.Location = proxyLocation; } else { context.GoodDatas.Add(new GoodData { CreationDate = DateTime.Now, Good = good, Response = resp, Url = url, Location = proxyLocation }); } } else { context.GoodDataErrors.Add(new GoodDataError { CreationDate = DateTime.Now, Good = good, Response = resp, Url = url }); } await context.SaveChangesAsync(); return; var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(resp); //*[@id="pdpPricingAvailability"]/div[2]/div[2] //*[@id="pdpPricingAvailability"]/div[2]/div[2]/div[2] //*[@id="pdpPricingAvailability"]/div[2]/div[2] var ddd = htmlDoc.DocumentNode.SelectNodes("//*[@id='pdpPricingAvailability']/div[2]/div[2]/div[@class='div-table-row']"); int countPriceDiv = htmlDoc.DocumentNode.SelectNodes("//*[@id='pdpPricingAvailability']/div[2]/div[2]/div[@class='div-table-row']").Count(); for (int i = 1; i <= countPriceDiv; i++) { var priceDiv = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='pdpPricingAvailability']/div[2]/div[2]/div[ i + 1]"); } HttpResponseMessage response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsStringAsync(); } int dd = 5; }
public static void PopulateGoodBrowser(Mouser.Domain.ApplicationContext context, Good good) { Random rnd = new Random(); int proxyId = rnd.Next(2, 5); Proxy proxy = context.Proxies.Find(proxyId); if (proxy == null) { return; } WebProxy wp = new WebProxy(proxy.IPAddress, true); if (proxy.UserName != "") { ICredentials credentials = new NetworkCredential(proxy.UserName, proxy.Password); wp.Credentials = credentials; } var web1 = new HtmlWeb(); string url = good.ProductDetailUrl.Replace("ru.", "").Replace("eu.", ""); //NetworkCredential networkCredential = new NetworkCredential(proxy.UserName, proxy.Password); //var doc2 = web1.Load(url, "GET", wp, networkCredential); var doc1 = web1.LoadFromBrowser(HttpUtility.UrlDecode(url), o => { var webBrowser = (WebBrowser)o; // WAIT until the dynamic text is set return(!string.IsNullOrEmpty(webBrowser.Document.GetElementById("mlnkMailTo").InnerText)); }); if ( !String.IsNullOrEmpty(doc1.Text) && !doc1.Text.Contains("<meta name=\"ROBOTS\" content=\"NOINDEX, NOFOLLOW\">") && !doc1.Text.Contains("{\"success\":false,\"error") ) { good.IsWebDownloaded = true; GoodData goodData = context.GoodDatas.FirstOrDefault(g => g.Good.Id == good.Id); if (goodData != null) { goodData.Response = doc1.Text; goodData.CreationDate = DateTime.Now; goodData.Url = url; } else { context.GoodDatas.Add(new GoodData { CreationDate = DateTime.Now, Good = good, Response = doc1.Text, Url = url }); } } else { context.GoodDataErrors.Add(new GoodDataError { CreationDate = DateTime.Now, Good = good, Response = doc1.Text, Url = url }); } context.SaveChangesAsync(); }