问题标签 [space-efficiency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 最有效的数据库日期存储方法?
所以我希望在我的 SQL 数据库中存储一个日期,但不确定最有效的方法是什么。我想到了两种不同的方法。
首先,人们将能够为每一天设定一个特定的价格。
例如:
2011 年 3 月 8 日:1 美元
2011 年 3 月 9 日:2 美元
2011 年 3 月 10 日:5 美元
对于我的数据库,我正在考虑存储一个 UNIX 时间戳,或者将月、日和年存储在单独的字段中。
第一种方法:
UNIX 时间戳
优点
- 只有一个字段
缺点
- 必须将日期转换为时间戳
- 必须在开始日期和结束日期之间进行搜索
- 搜索容易出错
月日年
优点
- 更容易搜索
缺点
- 更多领域
- 占用更多空间
- 将存储大量数据,因此可能会减慢数据库速度。
有了以上信息,您的建议是什么?(如果有任何不清楚的地方,我可以澄清一下。)
c - 将数组和数组指针传递给C中的函数之间的区别
C中的两个函数有什么区别?
如果我要在一个相当长的数组上调用函数,这两个函数的行为会有所不同,它们会在堆栈上占用更多空间吗?
php - 推荐的 SQL 类型和长度
我是 SQL 新手,我正在处理一个存储多人游戏帐户信息的表。我想知道存储大量数据的最有效方法是什么。
对于这三个专栏,我想,我已经想通了:
你怎么看待这件事?
除此之外,还会有很多更灵活的数据(游戏存档数据),我真的无法预测。将此数据作为 XML 数据保存在 TEXT 类型的字段中是否明智?还是有更好的方法来保存它(使用 PHP)?
谢谢。抢
database-agnostic - 数据库应用程序 - 即时存储或计算?
我有一个包含以下字段的采购清单表:ItemName、Quantity、UnitPrice、Amount。请注意,金额等于数量 * 单价。
我的简单问题是,我应该在检索数据时存储数量还是计算它?我应该关注什么,存储或处理?
sql - Oracle SQL - 是否有更有效的方法来组织大量案例语句
目前我有一份报告查看不同类型的文件。每个文件都有一个指定的时间范围,它应该在(即 2 天、4 天等)之前完成。有100多种文件。目前,为每个文档分配的时间尺度保存在 Excel 电子表格中,并使用 vlookup 公式(基于评估 ID)与 excel 中的数据相匹配。不幸的是,我们的数据库中没有地方可以放置这个指定的时间刻度,但我希望能够从数据库运行报告并将其发送给用户,而无需在 Excel 中进行这种额外的操作。我知道我可以通过编写大量案例陈述来实现这一点(下面只是一个例子)
IE
但我确实想知道在 SQL 中是否有更有效的方法来执行此操作(除了在数据库中请求一个额外的字段来记录这个!)?可能没有,但认为值得一问!谢谢。
java - Memory and speed efficient search on Strings
I have a bunch of String
s I'd like a fast lookup for. Each String is 22 chars long and is looked up by the first 12 only (the "key" so to say), the full set of Strings is recreated periodically. They are loaded from a file and refreshed when the file changes. I have to deal with too little available memory, other server processes on my VPS need it too and need it more.
How do I best store the Strings and search for them?
My current idea is to store them all one after another inside a char[]
(to save RAM), and sort them for faster lookups (I figure the lookup is fastest if I have them presorted so I can use binary or interpolation search). But I'm not exactly sure how I should code it - if anyone is in the mood for a challenging puzzle: here it is...
Btw: It's probably ok to exceed the memory constraints for a while during the recreation / sorting, but it shouldn't be by much or for long.
Thanks!
Update
For the "I want to know specifics" crowd (correct me if I'm wrong in the Java details): The source files contain about 320 000 entries (all ANSI text), I really want to stay (WAY!) below 64 MB RAM usage and the data is only part of my program. Here's some information on sizes of Java types in memory.
My VPS is a 32bit OS, so...
- one
byte[]
, all concatenated = 12 + length bytes - one
char[]
, all concatenated = 12 + length * 2 bytes String
= 32 + length * 2 bytes (is Object, haschar[]
+ 3int
)
So I have to keep in memory:
- ~7 MB if all are stored in a
byte[]
- ~14 MB if all are stored in a
char[]
- ~25 MB if all are stored in a
String[]
- > 40 MB if they are stored in a HashTable / Map (for which I'd probably have to finetune the initial capacity)
A HashTable is not magical - it helps on insertion, but in principle it's just a very long array of String where the hashCode modulus capacity is used as an index, the data is stored in the next free position after the index and searched lineary if it's not found there on lookup. But for a Hashtable, I'd need the String itself and a substring of the first 12 chars for lookup. I don't want that (or do I miss something here?), sorry folks...
algorithm - 字符串中的字符频率计算
我正在寻找最有效的(时间和空间)算法来计算给定字符串的字符频率。
想到的最简单的算法是有一个要搜索的标志数组(大小=不同字符的数量)并增加相应索引的计数器。这在线性时间内有效。唯一的问题是标志数组的空间要求,如果需要所有 ASCII 字符,它可以达到 256 个。
有没有更好的算法,可以节省空间/时间?
image - 如何最有效地用 1 个主图像和缩放的填充图像填充打印页面?
我正在打印纵横比在 1.7:1 和 8:1 之间的全景图。一个常见的情况是图像缩放到 18" x 8",在标准的 12x18 英寸页面上留下 4 英寸。纸张只有这么多种尺寸,但我的图像几乎可以是任何尺寸。
我讨厌浪费 4x18 英寸的打印空间,而且我一直在关注其他可以缩放以填满大部分房间的库存图像,并且具有最小的空白或失真。我只是把我的网站和版权放在上面,然后把它们用作名片。
每次我做印刷工作时,我都必须找到新的、有创意的组合。好像有人已经剥了这只猫的皮。我已经搜索了几个小时,但找不到对该算法的任何参考。
我编写了一个很小的半快(?)脚本,它采用图像文件规范和页面大小,将其缩放以适合页面,计算空白并给我空白的纵横比。然后,我会寻找一些具有大致 AR 效果的库存图像并将其缩放以适应。
如果没有适合的单个图像,那么我会寻找适合的 2 个。我已经使用了3。多么反复出现的痛苦。
你为什么要花几个小时来节省几美元的纸张?有些印刷品的体积相当大,有些印刷品的长度超过 3 英尺,因此可以叠加。另外,我可以获得免费赠品,我可以分发这些赠品,将真正的产品送到人们手中。
而且,有些全景图最多需要 34 张 HDR 图像,每张都必须经过手工 Photoshop 处理才能匹配,并且每张 HDR 图像通常是 7、36 MPix、D800E 图像。是的,制作一幅巨大的全景图需要多达 238 个单独的 NEF 文件和数万亿个 CPU 周期。
我已经在每张照片上投入了很多时间,一旦我制作了一个打包的大师,我就可以从那时起使用它,缩放以适应。将约 30% 的废物转化为有用的产品直接增加了利润。
一旦完成了繁重的计算和组合,使用 ImageMagick 即时缩放它们并将它们闪现到你面前,这样你就可以选择你最喜欢的一个。这可能很有趣。
最重要的是,这是一个智力挑战,迄今为止我还没有找到一个好的解决方案。
有任何想法吗?
sqlite - SQLite - 外键比 int 列更有效吗?
我有一张桌子:
其中score
是百分比。
将整数值放入其中或将外键放入像这样的表中是否更有效?
显然,该表将填充 0-100。
我的想法是,如果您有 1000 名学生,将其保留为整数列将意味着查询速度更快,但使用的空间更多,使用外键意味着使用的空间更少,但查询速度更慢。
不确定这是否正确?
所以我想我会把它扔在那里!
c# - 没有副本的 C# 数组切片
我想将一个 C# 数组的子集传递给一个方法。我不在乎该方法是否会覆盖数据,因此希望避免创建副本。
有没有办法做到这一点?
谢谢。