zoukankan      html  css  js  c++  java
  • localstorage检测

    localstorage检测

    初来乍到,刚刚接触一个从零开始的移动wap项目,希望内容根据策略(正在思考中)在浏览器中缓存,appcache、localstorage都作为泛化知识进行了解和练习,知道appcache有很多坑,考虑到之前专门去封装过localstorage的api并且也了解过鬼道写的store.js的原理,因此就决定用localstorage,但是使用之前就写这篇文章作为调研结果。

    项目对于存储虽然没有提出需要多么精确,既然使用了一定需要考虑存储的量精确到什么度,比如我要存多大的数据量,每次存储的更新策略以及浏览器的支持程度

    当然我之前也有遇见过localstorage在浏览器失效的问题

    好了,看起来很乐观,废话不多说了,开始写测试代码吧,cache.js

    function testCache(data, isCn) {
            var len = data.length * (isCn ? 2 : 1);
            var i = 0;
            cacheAPI.clear();
            var totalTime = 0;
            try {
                var startTime = +new Date();
                for(i = 0; i < 1000000; i++) {
                    cacheAPI.set(i, data);
                }
            } catch(e) {
                console.log(e)
            }
            i--;
            totalTime = Math.floor((+new Date() - startTime) /1000);
            console.log('单次存储字节数:' + len + ',key数:' + i + ',耗时:' + totalTime + 's,存储大小:' + (len * i /1024) + 'kb' + ',速度:' + ((len * i /1024) / totalTime) + 'kb/s')
        }
         testCache('测试', 1)
    

      

    以下为chrome下测试结果 一次存储一个字节: key规则:'test' + i(1-100000)

    key数:486725,耗时:23s,存储大小:3802.546875kb,速度:165.328125kb/s
    

      

    key规则:’j’ + i(1-1000000)

    key数:669247,耗时:32s,存储大小:5228.5kb,速度:163.390625kb/s
    

      

    key规则: i(1-1000000)

     单次存储字节数:1,key数:764854,耗时:39s,存储大小:5975.421875kb,速度:153.21594551282053kb/s
    

      

    以下测试key均为i(1-1000000) 其他存储长度的测试数据

    单次存储字节数:8,key数:382426,耗时:18s,存储大小:2987.703125kb,速度:165.98350694444446kb/s
    
    单次存储字节数:16,key数:223081,耗时:10s,存储大小:3485.640625kb,速度:348.5640625kb/s
    
    单次存储字节数:32,key数:133848,耗时:6s,存储大小:4182.75kb,速度:697.125kb/s
    
    单次存储字节数:64,key数:73998,耗时:3s,存储大小:4624.875kb,速度:1541.625kb/s
    

      

    存储汉字的测试数据

    单次存储字节数:2,key数:594886,耗时:29s,存储大小:1161.88671875kb,速度:40.06505926724138kb/s
    
    单次存储字节数:4,key数:535398,耗时:24s,存储大小:2091.3984375kb,速度:87.1416015625kb/s
    
    单次存储字节数:8,key数:446164,耗时:21s,存储大小:3485.65625kb,速度:165.98363095238096kb/s
    
    单次存储字节数:16,key数:334623,耗时:15s,存储大小:5228.484375kb,速度:348.565625kb/s
    
    单次存储字节数:32,key数:223081,耗时:21s,存储大小:6971.28125kb,速度:331.9657738095238kb/s
    
    单次存储字节数:64,key数:133848,耗时:6s,存储大小:8365.5kb,速度:1394.25kb/s
    
    单次存储字节数:128,key数:73998,耗时:6s,存储大小:9249.75kb,速度:1541.625kb/s
    
    单次存储字节数:512,key数:19976,耗时:1s,存储大小:9988kb,速度:9988kb/s
    
    单次存储字节数:1024,key数:10122,耗时:0.756s,存储大小:10122kb,速度:13388.888888888889kb/s
    

      

    上边的测试数据仅仅是在极限的情况下产生的数据,当然业务本身指定不会有这么频繁的存储。 这里是单词存储情况

    单次存储字节数:1,key数:1,耗时:0ms,存储大小:0.0009765625kb,速度:Infinitykb/ms
    
    单次存储字节数:2,key数:1,耗时:0ms,存储大小:0.001953125kb,速度:Infinitykb/ms
    
    单次存储字节数:4,key数:1,耗时:0ms,存储大小:0.00390625kb,速度:Infinitykb/ms
    
    单次存储字节数:8,key数:1,耗时:0ms,存储大小:0.0078125kb,速度:Infinitykb/ms
    
    单次存储字节数:16,key数:1,耗时:0ms,存储大小:0.015625kb,速度:Infinitykb/ms
    
    单次存储字节数:32,key数:1,耗时:0ms,存储大小:0.03125kb,速度:Infinitykb/ms
    
    单次存储字节数:64,key数:1,耗时:0ms,存储大小:0.0625kb,速度:Infinitykb/ms
    
    单次存储字节数:128,key数:1,耗时:0ms,存储大小:0.125kb,速度:Infinitykb/ms
    
    单次存储字节数:256,key数:1,耗时:0ms,存储大小:0.25kb,速度:Infinitykb/ms
    
    单次存储字节数:512,key数:1,耗时:0ms,存储大小:0.5kb,速度:Infinitykb/ms
    
    单次存储字节数:1024,key数:1,耗时:0ms,存储大小:1kb,速度:Infinitykb/ms
    

      

    从频繁存储的角度来看,实际存储的key的数量也会影响存储的大小,chrome上最大10m左右,感觉跑下来所有数据对电脑伤害好大,想说好多,测试过程中真的是各种恶心啊。其他浏览器没有测试,头疼啊。

  • 相关阅读:
    hive on tez自定义jobname
    hive血缘关系之输入表与目标表的解析
    spark ml中一个比较通用的transformer
    TF-IDF小记
    namenode服务迁移
    spark on yarn上的dynamic executor
    zookeeper集群线上机器置换
    namenode元数据容错
    Spark HistoryServer服务迁移
    Java中Webservice调用.NET天气接口生成客户端异常
  • 原文地址:https://www.cnblogs.com/God-Shell/p/4455478.html
Copyright © 2011-2022 走看看