windows – 如何增加内存来处理超大Lua表
发布时间:2020-12-14 02:11:13 所属栏目:Windows 来源:网络整理
导读:我有一个Lua函数,给定n,生成从1到n的系列的所有排列,并以表格形式将每个唯一系列存储在容器表中. 这个生成的表的大小非常快(并且必然如此).关于我尝试n = 11的时间,脚本将运行几秒钟,然后失败到“lua:没有足够的内存”.我有16GB的物理RAM,但是在Windows任务
我有一个Lua函数,给定n,生成从1到n的系列的所有排列,并以表格形式将每个唯一系列存储在容器表中.
这个生成的表的大小非常快(并且必然如此).关于我尝试n = 11的时间,脚本将运行几秒钟,然后失败到“lua:没有足够的内存”.我有16GB的物理RAM,但是在Windows任务管理器中观察性能监视器可以让我在运行时看到ram被消耗,并且在脚本以内存错误结束之前它只会达到大约20%. 我发现这篇帖子看起来像我需要的方向:memory of a process in Lua 由于我使用Lua.exe运行我的脚本,我假设我仅限于Windows为Lua.exe分配的内存量.我可以增加这笔金额吗?我可以使用C#包装器程序来简单地运行Lua脚本(这个想法是它将具有更高/更少限制的内存分配)?还是我在朝错误的方向看? 解决方法
您需要提前存储所有排列吗?您可以在运行中生成它们.
例: local function genPerm(self,i) local result = {} local f = 1 for j = 1,self.n do f = f * j table.insert(result,j) end for j = 1,self.n-1 do f = f / (self.n + 1 - j) local k = math.floor((i - 1) / f) table.insert(result,j,table.remove(result,j+k)) i = i - k * f end return result end local function perms(n) return setmetatable({n=n},{__index=genPerm}) end local generator = perms(11) for _,i in ipairs {1,42,1000000,39916800} do print(table.concat(generator[i],',')) end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用Microsoft Exchange Server 2013阻止某些附件类型的最可
- windows-server-2012-r2 – 事件查看器过滤不起作用 – 查询
- windows-xp – 如何修复“TCP / IP已达到安全限制…”事件消
- Windows提高_2.2第二部分:用户区同步
- windows – KillTimer是否必要?
- Windows 2012 R2 – 使用MD5哈希搜索文件?
- Microsoft Edge中的SVG呈现
- windows-phone-8.1 – Windows Phone 8.1中按钮的最小尺寸
- windows-phone-8 – WP8应用程序是否有任何认证工具包?
- .net – 如何安装同一Windows服务的多个实例
推荐文章
站长推荐
- 寻找一双慧眼:Web服务器日志工具点评
- microsoft-graph – 在Microsoft Graph / me / d
- 什么是Windows批处理相当于HTML的输入类型=“密码
- winapi – 如何在调整win32窗口大小时绘制OpenGL
- 如何在dos中获取给定命令的输出的第一行
- Windows – 导出GFI MailArchiver电子邮件以导入
- windows-server-2012 – 证书不匹配RDS会话主机
- windows-8 – 如何在Windows 8 Web视图中禁用缩放
- 使用Windows批处理脚本重命名目录中的所有文件
- windows – 强制mingw32-make忽略sh
热点阅读