private void btnFind_Click(object sender, EventArgs e) { CacheRec rec = null; var rnd = new Random(); var ridx = new ulong[0xffff]; for (var i = 0; i < ridx.Length; i++) { ridx[i] = (ulong)rnd.Next(Int32.MaxValue); } const int CNT = 40000000; ulong id = (ulong)tbID.Text.AsLong(); var watch = Stopwatch.StartNew(); //for(var i=0; i<CNT; i++) //Parallel.For(0, CNT,(i)=> rec = store.Get(TBL, (ulong)(i%3000)+id)); var tbl = store[TBL]; Parallel.For(0, CNT, (i) => rec = tbl.Get(ridx[i % 0xffff] + (ulong)i)); rec = tbl.Get(id); var elapsed = watch.ElapsedMilliseconds; Text = "Found {0} {1:n2} times in {2:n2} ms. Store count {3:n2} {4:n2} {5:N1}op/sec".Args(rec != null, CNT, elapsed, store.Count, rec != null?((SomeHuman)rec.Value).LastName:"", (int)(CNT / (elapsed / 1000d)) ); }
void Write() { Translater.BeginCache <CacheFile>(111, 2, new ulong[] { 1000, 2000 }); var _cache = new CacheRec() { actionType = (int)TranslaterDefine.MsgTypes.BuffAction, bFps = 1, eFps = 10 }; _cache.recUnits.Add(new RecUnit() { type = typeof(int), value = 1 }); _cache.recUnits.Add(new RecUnit() { type = typeof(int), value = 1 }); _cache.recUnits.Add(new RecUnit() { type = typeof(int), value = 1 }); _cache.recUnits.Add(new RecUnit() { type = typeof(int), value = 1 }); _cache.recUnits.Add(new RecUnit() { type = typeof(int), value = 1 }); _cache.recUnits.Add(new RecUnit() { type = typeof(int), value = 1 }); Translater.AddNewCache(_cache); Translater.SaveCache2File(Translater.EndCache()); }
private CacheRec CheckCacheHeaders(string FullPath, DateTime LastModified, HttpRequest Request) { string CacheKey = FullPath.ToLower(); HttpRequestHeader Header = Request.Header; CacheRec Rec; DateTimeOffset? Limit; lock (this.cacheInfo) { if (this.cacheInfo.TryGetValue(CacheKey, out Rec)) { if (Rec.LastModified != LastModified) { this.cacheInfo.Remove(CacheKey); Rec = null; } } } if (Rec is null) { Rec = new CacheRec() { LastModified = LastModified, IsDynamic = false }; using (FileStream fs = File.Open(FullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { Rec.ETag = this.ComputeETag(fs); } lock (this.cacheInfo) { this.cacheInfo[CacheKey] = Rec; } } if (!Rec.IsDynamic) { if (Header.IfNoneMatch != null) { if (Header.IfNoneMatch.Value == Rec.ETag) { throw new NotModifiedException(); } } else if (Header.IfModifiedSince != null) { if ((Limit = Header.IfModifiedSince.Timestamp).HasValue && LessOrEqual(LastModified, Limit.Value.ToUniversalTime())) { throw new NotModifiedException(); } } } return(Rec); }
internal Page(int recPerPage) { m_Records = new CacheRec[recPerPage]; }