问题标签 [c5]

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.

0 投票
0 回答
76 浏览

sql-server-2005 - SQL 用于在 Microsoft C5 中拆分 Zip 和 City 字段

我有一个客户正在运行 Microsoft C5 作为他们的 ERP 系统,我们应该帮助他们将其集成到他们的 CRM 系统中。为此,我创建了一个 SQL 视图,在其中根据我们的导入程序的标准映射导入客户所需的字段。问题是这个版本的微软 C5 将邮政编码和城市存储在同一个字段中,所以我需要将它分成一个邮政编码字段和一个城市字段。问题在于,邮政编码和城市之间的空格数量并没有一个共同的模式,而且邮政编码的长度也不相同,等等。我已经尝试了很多字符串函数,但我敢打赌,如果你知道如何解决它是小菜一碟。

以下是我需要拆分的 zipcity 列中的一些值示例:

如您所见,这里我们混合了德国、丹麦、挪威、瑞典和波兰的邮政编码和城市名称。这就是我需要分开的。

我不知道我是否应该尝试使用正则表达式?我在使用正则表达式方面不是很熟练,因此非常感谢您的帮助。

0 投票
1 回答
1243 浏览

c# - C5 通用集合库中的小型集合相对来说非常慢 - 有什么办法吗?

我最近一直在用 C# 测试 C5 集合,我很喜欢它们的功能。对于大型集合,性能似乎与通用对应物相当。但是,对于小型集合,它们的速度要慢得多。我怀疑相对速度的急剧下降来自 C5 集合执行的恒定时间操作。我知道的一项操作是触发事件。这可能是小型集合性能不佳的原因吗?可以通过关闭某些功能来解决这个问题吗?这是性能测试:

和测试类:

输出是:

C5 和测试都是发布版本。大约 60 倍的插入速度和 6 倍的排序速度在测试运行之间的比率是一致的。

编辑:上述测试是从 VS 中运行的。在 VS 之外运行的结果是:

同样,插入速度约为 100 倍,排序速度约为 2 倍,这在测试运行之间是一致的。

我的项目包括很多小容器的操作,它们的性能是最重要的。C5 容器的功能很棒,我很想使用它们,但目前由于性能原因不能使用。我将不胜感激对此事的任何见解。

EDIT2:根据 Iridium 的回答,我在循环中执行了测试(将包括容器创建在内的整个逻辑放入循环中,以排除任何编译器优化技巧),丢弃前两个结果并平均随后的 1000 个结果。他们来了:

现在 C5 插入速度慢了 76%,并且排序与 List 的排序相当。这对我的目的来说已经足够了。我接受铱星的回答。不过,如果有人对较慢的插入有任何见解,请分享。谢谢大家的帮助。

0 投票
1 回答
1049 浏览

c# - Microsoft Dynamics C5 与外部系统的集成

我目前正在进行一个将Microsoft Dynamics C5与外部系统集成的项目。即,当在 Dynamics C5 上创建项目时,我希望在外部系统(具有功能丰富的 API)中创建项目。有人可以告诉我们如何从 C5 部分管理它,我们可以使用 c# 直接从 C5 数据库访问它,还是在 C5 上有类似 web-hooks 的概念?

0 投票
2 回答
5114 浏览

c# - 用 C# 实现 Hoey Shamos 算法

好的,我现在从我当前的算法中获得了正确的信息!但是,要检查 700,000 个多边形,这实在是太慢了!上一个问题已修复(我的 Line2D intersectsWith 方法不正确)

现在是确定我的瓶颈的问题!该算法假设为 O(nlog-n),因此它应该更快。我的 intersectsWith 方法看起来不能再快了,但是我会发布它的代码,以防我错了

编辑:添加了 IComparable 接口

我的读取线段交点的方法。为了便于阅读,省略了一些代码。

在我的大部分算法实现中,我意识到 List 对于算法来说并不是最快的,但是我需要索引!:

============================================

更新:9 月 12 日:实现了 C5 的 TreeSet,实现了 IComparable 到我的类,并且更慢了?如果这很重要,我还在索引它吗?

http://www.itu.dk/research/c5/

使用 TreeSet 的代码:

}

0 投票
1 回答
850 浏览

c# - 用于快速过滤的 .net 集合(排序集合)

在分析一个非常慢的方法时,我发现滞后在于搜索和过滤集合。

该方法执行以下操作(按顺序)。根据 profiler 的说法,80% 的时间都花在了步骤 1-3 上。

  1. 从文件中读取排序集合并使用 Protobuf-net (v2) 反序列化
  2. 从已排序的集合中,根据开始和结束整数(名称.RangeFromTo())进行过滤
  3. 从同一个排序的集合中,获取集合的下一个元素(名称 . Right()
  4. 执行一些任务...

.RangeFromTo()给定范围的过滤器,例如:

.Right()在集合中找到一个元素并为您提供列表中的下一个元素。如果该元素不存在,它会为您提供最接近的向右计数。例如:

目前该集合使用SortedArray来自 C5 ( https://github.com/sestoft/C5/ )。有没有更合适的收藏可以使用?

注意:步骤 1. 大约需要总时间的 30%。如果我改用 List,protobuf 反序列化的时间实际上减少了 40%!我猜当插入 SortedArray 时,集合不知道数据已经排序并且正在做一大堆工作。理想的集合(如果存在)也应该能够绕过它。

编辑: 澄清一下,列表大约是 1000-5000,并且有 90k 不同的集合!有问题的方法需要加载内存中的所有集合来执行一些业务任务。

编辑 2: 我在这里添加了一些示例基准:

https://github.com/cchanpromys/so_19188345

它将SortedArrayC5 与SortedSet.Net 进行比较。到目前为止,结果如下:

编辑 3 这出乎我的意料,但我最终得到了一个列表的自定义实现。

我遇到的问题是 SortedArray 的 Find 操作(通常)需要 O(Log(N)),而我希望它是 O(1) 操作。

此外,列表是按性质排序的,您永远不会添加到列表的中间。

所以我最终实现了一个具有内部索引器数组的列表,例如:

例如:

.Right(3)也会如此list[indexer[3]++]

代码可以在这里找到。

很难相信这种类型的列表尚未在 Internet 上的某个地方实施。如果可能的话,我想使用一个库,这样我就不必管理自己的列表了。

互联网上是否存在这样的实现?

0 投票
0 回答
1000 浏览

c# - C# 中类似 Redis 的 SortedSet

与 BCL 的SortedSet<T>or SortedDictionary<T>from BCL 不同,Sorted SetsRedis 的 The from Redis 要强大得多。

  • 它允许访问member,很像字典
  • 序列score由不同的字段确定member并允许相同的值
  • 允许以可接受的时间复杂度获得最小值/最大值

我不想结合Dictionary+SortedSet来实现我的目标。

我在看C5库,不太确定哪个类最适合我。

更新:最后我找到了这个,非常符合我的要求。

0 投票
1 回答
176 浏览

.net - 如何搜索 C5.TreeSet?

我有一个C5.TreeSet<double>, 一个排序的数据结构。https://github.com/sestoft/C5/

给定一个 value x,我想在集合中搜索所有j ≤ iS的最大索引(类似于 Python 的)。我怎样才能做到这一点?iS[j] <= xbisect.bisect

我以前使用List<T>withBinarySearch

0 投票
1 回答
270 浏览

c# - C# 中是否有用于间隔缩放值的接口?

我正在对著名的 C# 库C5进行间隔集合扩展。该接口定义了一个具有可比较端点的间隔(删除了不相关的成员):IInterval

这通常效果很好,因为间隔端点可以是任何可比较的东西,如整数、日期甚至字符串。

但是,有时能够计算间隔的持续时间是有利的。间隔[3:5)的持续时间为 2,间隔[1PM, 9PM)的持续时间为 8 小时。这对于可比对象是不可能的,因为它只给我们元素的顺序,而不是它们的距离,例如,很难给出两个字符串之间的距离。端点类型基本上必须是区间缩放值

是否有类似的接口IComparable<T>,它允许我比较一般的端点,但也可以做一些事情,比如减去两个端点以获得持续时间,并将持续时间添加到低端点以获得可用于继承接口的高端点,IDurationInterval<T> : IInterval<T>例如?

或更简洁:是否有区间缩放值的接口?

0 投票
1 回答
175 浏览

c# - C5.IPriorityQueueHandle 中的无效转换

我在使用 C5 IntervalHeap 实现 C5.IPriorityQueueHandle 接口时遇到问题。我可以将堆与空句柄一起使用,使用默认的 DeleteMin() 等,但我希望以后能够通过句柄更新优先级。

下面是我的代码的简化版本,以及异常文本:

异常:C5.dll 中出现“System.InvalidCastException”类型的未处理异常

附加信息:无法将类型为“Handle`1[_8_Puzzle.Node]”的对象转换为类型“Handle[_8_Puzzle.Node]”。

0 投票
1 回答
1158 浏览

c# - 如何在 C5 库中使用 IPriorityQueue

我正在为 C# ( C5 ) 使用流行的 C5 库,并且我正在尝试弄清楚如何IPriorityQueue正确实现。可以说我有一套A={5,4,1,2,3}。我希望优先级是最高的整数值。我该如何实施?

有人可以举一个例子,说明我将集合中的元素A一个一个添加到队列中吗?在哪里可以指定优先级属性?有点迷失了实施。

顺便说一句,最终目标是使用它来制作二进制堆。