在我最后一次失败后,尝试在这里提出一个问题,这次我正在尝试一个更精确的问题:
是)我有的:
ISet<Point>.我需要的:
3)[1],[2]的表格,其中我将[2]的每个值映射到值[1]
处理:
对于这个计算,我有一个公式,它取一个位值(来自[2])和一组位置(来自[1])并创建一个新的ISet<Point>.我需要找出哪个原始集合等于结果集合(即"A7"表中的"单元格"可能指向"B").
天真的方式:
在[1]的值列表中计算new ISet<Point>和use .Contains(mySet)或类似的东西.我在此概念验证/宠物项目的先前版本中做到了这一点,当我开始提供大量数据时,它已经死了.是的,我使用了一个分析器.不,这不是系统中唯一缓慢的部分,但是我在这个天真的查找/映射中浪费了相当多的时间.
问题,最后:
由于我基本上只需要重新映射到输入,我考虑为列表创建一个散列值列表ISet<Point>,对我的处理结果做同样的事情,因此避免比较整个集合.
这是一个好主意吗?你会称之为过早的优化(我知道上面的天真的方式太慢了,但我应该先实现一些不那么聪明的东西吗?性能在这里非常重要,再想想运行时间)?任何其他建议,以缓解这里的burdon或想法我应该阅读?
更新:很抱歉没有提供更好的解释或样品.
[1]的样本(注意:这些是真正可能的数据点,但显然它是有限的):
new List<ISet<Point>>() {
new HashSet() {new Point(0,0) },
new HashSet() {new Point(0,0), new Point(2,1) },
new HashSet() {new Point(0,1), new Point(3,1) }
}
Run Code Online (Sandbox Code Playgroud)
[2]只是长度为n的布尔矢量.对于n = 2,它是
基本上我可以使用int或long来做那个.
现在我有一个函数,它接受一个向量和一个ISet<Point>并返回一个新的ISet<Point>.这不是1:1的转换:一组5可能会导致一组11或其他.将所得的ISet<Point> 被然而保证是输入的一部分.
使用字母表示位向量的一组点和数字,我从这开始
A B C D E F 1 2 3 4 5 6 7 …
我知道我们不能在java中的if语句中使用赋值运算符,因为我们在其他几种语言中使用它.
那是
int a;
if(a = 1) { }
Run Code Online (Sandbox Code Playgroud)
会给出编译错误.
但是下面的代码工作得很好,怎么样?
boolean b;
if(b = true) { }
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个例外,规则不能在if语句中使用赋值.
我使用VS8和C#开发了一个简单的网站,当我调试一切正常时,我使用Ctrl + Shift + B构建,当我将网站上传到godaddy服务器时,它显示下一个错误:
分析程序错误说明:解析为此请求提供服务所需的资源时发生错误.请查看以下特定的解析错误详细信息并相应地修改源文件.
分析器错误消息:无法加载类型'testDemo._Default'.
来源错误:
第1行:<%@ Page Language ="C#"AutoEventWireup ="true"CodeBehind ="Default.aspx.cs"Inherits ="testDemo._Default"%>第2行:
第3行:
我发现的一个解决方案是删除部件Inherits="testDemo._Default",但是在调试它时不会执行" Page_Load(object sender, EventArgs e)".
有谁知道是什么导致了这个错误?
我们计划实施一个系统,将高频率的市场价格记录到数据库中进行进一步分析.为了简单地了解我们可以在不同的数据库解决方案上获得什么样的存储性能,我创建了一个用于插入基本行标记信息的小应用程序.在几个不同的DB上运行相同的代码时,我们得到了一些有趣的结果.
插入的数据非常简单如下:
CREATE TABLE [dbo].[price](
[product_code] [char](15) NULL,
[market_code] [char](10) NULL,
[currency] [nchar](6) NULL,
[timestamp] [datetime] NULL,
[value] [float] NULL,
[price_type] [char](4) NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
Microsoft SQL Server:
总测试时间:32秒.每秒3,099个价格.
MySQL服务器:
总测试时间:18秒.每秒5,349个价格.
MongoDB服务器:
总测试时间:3秒.每秒25,555个价格.
此测试的目的只是为了获得底部系统可以预期的"原始性能"的一些指示.当实际实施解决方案时,我们当然会做缓冲,批量插入等.
我们只关心插入的速度,因为查询是在以后"离线"完成的.
有没有人对其他适合的数据库有任何建议?今晚我也会尝试使用HDF5和MonetDB.它需要具有多客户端访问权限.
谢谢你的任何建议!
更新 :
抱歉,我在定位前对我的问题进行了重大编辑,似乎我遗漏了服务器版本和硬件的一些细节.所有测试都在8核服务器上运行Windows 2008 x64,内存为12GB.
Microsoft SQL Server 2008 Enterprise x64.MySQL 5.1.44作为InnoDB表运行.MongoDB 1.2.4 x64
当前测试是一个简单的行插入DB的循环,其中纳斯达克的真实历史数据已编译成已导入内存的CSV文件.代码在C#NET4 x64中.
MS SQL和MySQL服务器被"调整"到完美设置,而MongoDB只是设置了默认设置.SQL表的设置没有索引,因为在转移到主分析系统之前,DB的目的很简单,因为它是一个临时基础.
许多建议使用批量插入,但这是一种难以实现的方式,因为我们有几个客户端独立于实时流将单个刻度线推入数据库.为了允许这样的方法,我们必须将数据库前面的层扩展到我们现在有机会测试的范围之外.但是我想象最终架构必须要做的事情,因为我们从除MongoDB之外的所有东西获得的数字不足以处理所需的输入数量.
更新2:SSD驱动器确实非常适用于此,我们自己也在使用它.然而,最终产品将安装在几个不同的客户,这些客户都提供自己的铁..而从IT部门获取SSD的服务器仍然很难...... :(
更新3:
我尝试了BulkCopy方法.与其他循环相同的循环的性能,但首先进入DataTable然后BulkInsert进入SQL Server导致以下结果:
Microsoft SQL Server(批量):
总测试时间:2秒.每秒39401个价格.
strchrC标准库中的函数在char字符串中查找a ,但其签名需要int搜索字符.在我发现的这两个实现中,实现将其转换int为char:
char *strchr(const char *s, int c) {
while (*s != (char)c)
if (!*s++)
return 0;
return (char *)s;
}
char *strchr(const char *s, int c) {
while (*s && *s != (char)c)
s++;
if (*s == c)
return (char *)s;
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么?为什么不把a char作为参数呢?
有没有一种简单的方法可以从C/C++源文件中删除注释而无需进行任何预处理.(也就是说,我认为你可以使用gcc -E,但这会扩展宏.)我只想要删除注释的源代码,不应该改变任何其他内容.
编辑:
对现有工具的偏好.我不想用正则表达式自己写这个,我预见代码中有太多的惊喜.
在NS(Mutable)词典中用作键的所有对象必须支持NSCopying协议,并且这些对象在字典中使用时会被复制.
我经常想要使用较重的物体作为键,只需将一个物体映射到另一个物体.当我这样做时,我真正的意思是:
[dictionary setObject:someObject forKey:[NSValue valueWithPointer:keyObject]];
Run Code Online (Sandbox Code Playgroud)
("当我回来再次交给你这个相同的关键对象实例时,给我相同的值.")
...这正是我最终做的有时候绕过这个设计.(是的,我知道桌面Cocoa中的NSMapTable;但是iPhone不支持这个.)
但我真正得到的是为什么首先复制密钥是必要的或可取的.它是如何购买实现或调用者的?
什么时候...在...可以吗?
具体来说,当我们可以写:
NSArray *array;
// array allocated and initialized here.
for (id obj in array) {
// do something to the object here
}
Run Code Online (Sandbox Code Playgroud)
我们为什么要使用NSEnumerator?
我有以下密码要求:
1)长度应为6-15个字符
2)应至少有一个小写字符
3)至少应有一个大写字符
4)至少应有一个数字
5)至少应有一个特殊字符
6)不应有空格
任何人都可以建议我这个要求的RegEx吗?
我正在解散一个相当大的旧库,其中包含随着时间的推移积累的各种PHP帮助程序函数.我正在寻找基于Zend Framework的替代品来尽可能多地使用这些功能.
我的第一个候选人是一个函数,它可以从巨大的列表中返回用户最喜欢的浏览器语言http_accept_language.
ZF有功能吗?
我意识到Zend_Translate能够以某种方式检测浏览器语言,但我没有看到公开可用的函数来实际获取语言字符串.
asp.net ×2
c ×2
c# ×2
c++ ×1
char ×1
cocoa ×1
comments ×1
hash ×1
int ×1
java ×1
mysql ×1
nsdictionary ×1
nsenumerator ×1
objective-c ×1
optimization ×1
php ×1
regex ×1
scjp ×1
sql-server ×1
sqlite ×1
string ×1
web ×1