我的应用程序中的函数需要访问数组元素。 我可以在每次调用此函数时生成随机索引,或者将先前访问的索引存储到localStorage中,然后获取此值并将索引初始化为1 + previous_index
当用户再次访问我的应用程序时,我需要保留索引数据。
所以,现在我必须在一个之间做出选择。使用 Math.random()或使用 localStorage 。
哪个选项会更快。
PS:尽管这对性能的影响非常小。但这里的主要问题是 localStorage是否可以访问繁重的操作
答案 0 :(得分:2)
这是一个沉重的操作,我倾向于说不。
它会比Math.random()
慢吗?我会说这取决于你的代码..(就像你还在做什么)
我制作了jsperf here
var a = []
var key = Math.random()
a[key] = 'test'
VS
var a = []
var key = parseInt(localStorage.getItem('key')) || 0
localStorage.setItem('key', key+1)
a[key] = 'test'
Math.random()
速度更快,但我没有保留任何键..键是浮点数,在我的例子中你不能使用a.length
,因为浮点数一直返回0!
答案 1 :(得分:1)
您的问题的答案"本地存储访问繁重的操作"是否 但与本地函数相比,它更慢。 您可以运行此处给出的测试,以获取本地存储和本地功能,因为它需要执行IO。
https://jsperf.com/localstorage2
但是,您可能会发现另一个主要问题"浏览器可能不允许在私人模式下浏览本地存储"。由于安全问题,许多浏览器在正常模式下也不允许。您可以了解有关本地存储安全问题的更多信息。
//商店 localStorage.setItem(" lastname"," Keny");
//检索 document.getElementById(" result")。innerHTML = localStorage.getItem(" lastname");
希望这会有所帮助。