将一个组添加到超过82条记录的交叉过滤器中会耗尽内存

时间:2018-05-24 10:48:11

标签: javascript crossfilter

我使用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条记录,所以有谁知道我能做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:0)

对此应该有一个可接受的答案。 OP自己设法在问题注释中指出了错误。

此处的解决方案是确保交叉过滤器获得 100%完美数据。 CSV中没有空行,JavaScript对象中没有空白属性,诸如此类。