Memory management 为什么大多数电子表格对行数和列数都有硬编码限制?

Memory management 为什么大多数电子表格对行数和列数都有硬编码限制?,memory-management,dynamic,spreadsheet,anti-patterns,Memory Management,Dynamic,Spreadsheet,Anti Patterns,为什么像Microsoft Excel、Gnumeric和OpenOffice.org Calc这样的程序在设计时对行数和列数有硬编码限制?这似乎是一种过时的编程技术,从那时起,电子表格被认为是一个要求很高的应用程序,而动态内存分配被认为是“高端”的。我猜这表明一些资源是静态分配的,假设“没有人会需要更多”,从而在应用程序中引入了一个非常任意的限制。背后的逻辑是什么 注意:我知道有些人会争辩说这个问题与编程无关。这里有一个先发制人的反驳:这个问题与编程有关,因为它问的是为什么要使用一种普遍且似乎

为什么像Microsoft Excel、Gnumeric和OpenOffice.org Calc这样的程序在设计时对行数和列数有硬编码限制?这似乎是一种过时的编程技术,从那时起,电子表格被认为是一个要求很高的应用程序,而动态内存分配被认为是“高端”的。我猜这表明一些资源是静态分配的,假设“没有人会需要更多”,从而在应用程序中引入了一个非常任意的限制。背后的逻辑是什么


注意:我知道有些人会争辩说这个问题与编程无关。这里有一个先发制人的反驳:这个问题与编程有关,因为它问的是为什么要使用一种普遍且似乎过时的编程方法。

最初的原因是为了性能和空间,因为(例如)处理65536行只需要两个字节。这些历史原因已随Office 2007一起消失(如果不是其他原因的话),因此您的问题也过时了。

最初的原因是性能和空间,因为(例如)处理65536行只需要两个字节。这些历史原因已经随Office 2007一起消失了(如果不是其他原因的话),因此您的问题也过时了。

因为将单元格引用作为一对索引处理更容易,并且它们最终会有一个限制


简言之,无论你做什么,都会有一个限制,问题是它会是什么,它的成本是多少,有多少人会遇到它?

因为将单元格引用作为一对索引处理更容易,它们最终会有一个限制


简言之,无论你做什么,都会有一个限制,问题是它会是什么,制造它需要多少成本,有多少人会遇到它?

下一个Gnumeric版本将允许更大的表,最多8行8千列。如果您真的需要如此大的表,请购买一些TB的RAM。

下一个Gnumeric版本将允许更大的表,最多8行8列。如果您真的需要如此大的表,请购买一些TB的RAM。

在Excel97 biff记录中,列存储为0xff编号,行存储为0xFFFF numner。
因此,它将列限制为255,行限制为65535,如果您想在Excel2003中保存更多行/列(如果IDE支持),则不会保存。

在Excel97 biff记录中,列存储为0xff编号,行存储为0xFFFF numner。
因此,它将列限制为255,行限制为65535,如果您想在Excel2003中保存更多行/列(如果IDE中支持),则不会保存。

严格来说,这不是真的。它们不是真的消失了,只是变得更大了。限制现在是1048576(2^20)行。@John Feminella:正是我的观点。是的,这是一个更大的限制,但它仍然是一个任意的、硬编码的限制。@dsimcha:你真的认为电子表格是处理1亿行数据集的合适工具吗?在这样的世界里,为什么不使用真正的数据库和sql呢?我的一位朋友可靠地告诉我,当你浏览65536行时,性能就会下降,所以我认为你的“任意”陈述是错误的。性能很重要,你在说什么。我刚刚尝试在Excel中打开一个700万行的CSV(我有足够的RAM轻松处理这个问题),Excel不会超过1048576,正如这里所记录的那样:严格来说不是这样。它们不是真的消失了,只是变得更大了。限制现在是1048576(2^20)行。@John Feminella:正是我的观点。是的,这是一个更大的限制,但它仍然是一个任意的、硬编码的限制。@dsimcha:你真的认为电子表格是处理1亿行数据集的合适工具吗?在这样的世界里,为什么不使用真正的数据库和sql呢?我的一位朋友可靠地告诉我,当你浏览65536行时,性能就会下降,所以我认为你的“任意”陈述是错误的。性能很重要,你在说什么。我刚刚尝试在Excel中打开一个700万行的CSV(我有足够的RAM轻松处理),Excel不会超过1048576,如下所述: