有一个名为svnmerge.py的脚本,我正在尝试调整和优化一下.我对Python完全不熟悉,所以这并不容易.
当前的问题似乎与RevisionSet脚本中调用的类有关.实质上它所做的是创建一个整数键布尔值的大散列表(?).在最坏的情况下 - 我们的SVN存储库中的每个版本都有一个,现在接近75,000.
之后,它对如此庞大的数组执行集合运算 - 加法,减法,交集等.实现是最简单的O(n)实现,当然,在这么大的集合上变得非常慢.整个数据结构可以优化,因为有很长的连续值.例如,1到74,000之间的所有键可能包含true.此脚本也是为Python 2.2编写的,这是一个非常古老的版本,我们仍然使用2.6,所以也可能有一些东西可以获得.
我可以尝试自己拼凑这些,但这很困难并且需要花费很多时间 - 更不用说它可能已经在某处实现了.虽然我喜欢学习经历,但结果现在更重要.你有什么建议我这样做?
我有一个用C#(.NET 4.0)编写的.NET应用程序.在此应用程序中,我们必须从文件中读取大型数据集,并以类似网格的结构显示内容.因此,为了实现这一点,我在表单上放置了一个DataGridView.它有3列,所有列数据都来自文件.最初,该文件有大约600.000条记录,对应于DataGridView中的600.000行.
我很快发现,DataGridView崩溃了这么大的数据集,所以我切换到虚拟模式.为了实现这一点,我首先将文件完全读入3个不同的数组(对应3列),然后触发CellValueNeeded事件,我从数组中提供正确的值.
但是,正如我们很快发现的那样,这个文件中可能有一个巨大的(巨大的!)记录数.当记录大小非常大时,将所有数据读入数组或List <>等似乎是不可行的.我们很快就会遇到内存分配错误.(内存不足异常).
我们卡在那里,但后来意识到,为什么首先将数据全部读入数组,为什么不在CellValueNeeded事件触发时按需读取文件?这就是我们现在所做的:我们打开文件,但不读取任何内容,并且当CellValueNeeded事件触发时,我们先将Seek()放到文件中的正确位置,然后读取相应的数据.
这是我们能想到的最好的,但是,首先这是非常缓慢的,这使得应用程序缓慢且用户不友好.其次,我们不禁认为必须有更好的方法来实现这一目标.例如,某些二进制编辑器(如HXD)对于任何文件大小都非常快,所以我想知道如何实现这一点.
哦,并且为了解决我们的问题,在DataGridView的虚拟模式中,当我们将RowCount设置为文件中的可用行数(例如16.000.000)时,DataGridView甚至需要一段时间来初始化自身.对此"问题"的任何评论也将受到赞赏.
谢谢
问题1:随着数据库表的大小变大,如何调整MySQL以提高LOAD DATA INFILE调用的速度?
问题2:是否会使用一组计算机来加载不同的csv文件,提高性能还是杀死它?(这是我明天使用负载数据和批量插入的基准测试任务)
我们正在为图像搜索尝试不同的特征检测器和聚类参数组合,因此我们需要能够及时构建大型数据库.
如果有办法通过分发数据库来改善创建时间,那么机器有256 gig的ram,另外还有2台机器可以使用相同数量的ram?
表模式看起来像
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| match_index | int(10) unsigned | NO | PRI | NULL | |
| cluster_index | int(10) unsigned | NO | PRI | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| tfidf | float | NO | | 0 | |
+---------------+------------------+------+-----+---------+----------------+
mysql optimization binaryfiles query-optimization large-data
我打算使用伟大的同位素插件来显示联系人列表,然后允许他们进行过滤.我遇到的问题是它适用于小型数据集,但我不确定为1000多个数据扩展它的最佳方法.
到目前为止我的想法是:
我不确定这些是否会运作良好,我希望其他人能够面对这种情况,并能给我一些想法.
有没有人知道在没有使用外部实用程序(即bcp)的情况下从Excel表格(VBA阵列)获取数据的最快方法到SQL 2008上的表格?请记住,我的数据集通常是6500-15000行,大约150-250列; 我最终在自动VBA批处理脚本中传输了大约20-150个.
我已经尝试了几种从Excel表(VBA)到SQL 2008获取大量数据的方法.我列出了以下内容:
方法1.将表传递到VBA阵列并发送到存储过程(ADO) - 发送到SQL是缓慢的
方法2.创建断开连接的RecordSet加载它,然后同步. - 发送到非常慢的SQL
方法3.将表放入VBA数组,循环遍历数组并连接(使用分隔符),然后发送到存储过程. - 发送到SQL SLOW,但比方法1或2更快.
方法4.将表放入VBA数组,循环遍历数组并连接(使用分隔符),然后将每行放置ADO recordset .addnew命令. - 发送到SQL非常快(比方法1-3快约20倍),但现在我需要使用单独的过程拆分数据,这将增加大量的等待时间.
方法5.将表放入VBA数组,序列化为XML,作为VARCHAR发送到存储过程并在存储过程中指定XML. - 发送到SQL INCREDIBLY SLOW(比方法1或2慢大约100倍)
我错过了什么?
我defaultdict用来存储数百万个短语,所以我的数据结构看起来像mydict['string'] = set(['other', 'strings']).它似乎适用于较小的套装但是当我击中任何超过1000万个按键时,我的程序只是崩溃了有用的信息Process killed.我知道defaultdict内存很重,但是有一个使用defaultdicts 存储的优化方法还是我必须查看其他数据结构,如numpy数组?
谢谢
所以,我正在处理集成遗留系统.它生成一个大文本文件,用一个大字符串打印指令.真的很大的字符串.我们说的是450,000个字符或更多.
我需要将其分解为一行,每条指令一行.每条指令由五位数代码分隔,其中代码包含下一条指令中的字符数.
我的解决方案是编写一个小型java程序,该程序使用缓冲读取器将文件读入字符串,然后将其拆分为行,并保存到新文件中.
处理此事的任何建议?缓冲读者是否能够将其读入常规字符串?我这样做错了吗?
我试图绘制一个2000列和200000行的矩阵.当矩阵很小时,我可以测试绘图和测试输出矩阵图
matshow(my_matrix)
show()
Run Code Online (Sandbox Code Playgroud)
但是,当更多行添加到my_matrix时,图形变得非常窄,因为行数多于列,因此在放大时会失去精度.我可以使矩阵图形可滚动吗?如果没有,我怎么能在不失去精度的情况下可视化这样的矩阵?
我还尝试调用savefig('filename',dpi = 300)以保存图像而不会损失太多精度,但是当矩阵很大时它会抛出MemoryError.非常感谢!
我在data.table(1.8.8,R 3.0.1)中使用fread试图读取非常大的文件.
问题中的文件有313行和~660万列数字数据行,文件大约为12gb.这是一款带有512GB RAM的Centos 6.4.
当我尝试读入文件时:
g=fread('final.results',header=T,sep=' ')
'header' changed by user from 'auto' to TRUE
Error: protect(): protection stack overflow
Run Code Online (Sandbox Code Playgroud)
我尝试使用--max-ppsize 500000启动R,这是最大值,但是同样的错误.
我也尝试将堆栈大小设置为无限制
ulimit -s unlimited
Run Code Online (Sandbox Code Playgroud)
虚拟内存已设置为无限制.
我对这么大的档案不切实际吗?我错过了一些相当明显的事吗?
large-data ×10
python ×4
numpy ×2
optimization ×2
binaryfiles ×1
c# ×1
data.table ×1
datagridview ×1
defaultdict ×1
excel ×1
file-io ×1
fork ×1
import ×1
java ×1
matplotlib ×1
matrix ×1
mysql ×1
python-2.6 ×1
r ×1
string ×1
vba ×1