示例#1
0
        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))
                                                                                                      );
        }
示例#2
0
    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);
        }
示例#4
0
文件: Page.cs 项目: chadfords/azos
 internal Page(int recPerPage)
 {
     m_Records = new CacheRec[recPerPage];
 }
示例#5
0
文件: Page.cs 项目: vlapchenko/nfx
 internal Page(int recPerPage)
 {
     m_Records = new CacheRec[recPerPage];
 }