我使用crossfilter来驱动一些dc.js
的图表,但是在处理82条记录时,我的内存崩溃了。
我的记录是这样的一系列对象:
{
"date": Thu May 24 2018 11:29:27 GMT+0100 (GMT Daylight Time),
"recipients": ["name1", "name2"],
"text": "Lorem ipsum dolor sit amet"
}
我正在执行这样的初始数据加载:
var ndx = crossfilter(items)
this.displayItems = ndx.allFiltered()
var dateDimension = ndx.dimension(d => d.date)
var dayHourDimension = ndx.dimension(d => [d.date.getDay(), d.date.getHours()])
// by day
var detailGroup = dateDimension.group(d => {
if (d) { // Chrome identifies this line as causing the out of memory crash
return new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())
}
})
// by month
var overviewGroup = dateDimension.group(d => {
if (d) {
return new Date(d.getUTCFullYear(), d.getUTCMonth())
}
})
var heatMapGroup = dayHourDimension.group().reduceSum(d => 1)
我已经在我的代码中标记了Chrome在崩溃发生之前中断的点,并查看了调用堆栈,它位于交叉过滤器源中的this point处,其中添加了新值小组(nb I' m使用v1.4.5)。 Edge和Firefox中有超过82条记录发生同样的崩溃。我已经尝试将我的记录中的数据减少到日期,但这没有任何区别。显然,我希望能够处理超过82条记录,所以有谁知道我能做些什么来解决这个问题?
答案 0 :(得分:0)
对此应该有一个可接受的答案。 OP自己设法在问题注释中指出了错误。
此处的解决方案是确保交叉过滤器获得 100%完美数据。 CSV中没有空行,JavaScript对象中没有空白属性,诸如此类。