問題タブ [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.
sql-server-2005 - Microsoft C5 で Zip と City フィールドを分割するための SQL
ERP システムとして Microsoft C5 を実行している顧客がいて、CRM システムに統合する手助けをすることになっています。そのために、インポート プログラムの標準に従って顧客をインポートするために必要なフィールドをマップする SQL ビューを作成しました。問題は、Microsoft C5 のこのバージョンでは郵便番号と都市が同じフィールドに保存されるため、郵便番号フィールドと都市フィールドに分割する必要があることです。問題は、郵便番号と市区町村の間の空白の数の一般的なパターンが実際にはなく、郵便番号の長さが等しくないことです。私は多くの文字列関数を試しましたが、方法を知っていれば簡単に解決できるはずです。
分割する必要がある zipcity 列の値の例を次に示します。
ご覧のとおり、ここにはドイツ語、デンマーク語、ノルウェー語、スウェーデン語、ポーランド語の郵便番号と都市名が混在しています。これは私が分割する必要があるものです。
正規表現を試してみるべきかどうかわかりませんか? 私は正規表現の使用にあまり熟練していないので、助けていただければ幸いです。
c# - C5 Generic Collection Library からの小さなサイズのコレクションは比較的非常に遅いです。何かできることはありますか?
私は最近、C# で C5 コレクションをテストしており、その機能が気に入っています。大規模なコレクションの場合、パフォーマンスは一般的なコレクションと同等のようです。ただし、小さなコレクションの場合は、大幅に遅くなります。相対速度の劇的な低下は、C5 コレクションによって実行される一定時間の操作に起因すると思われます。私が知っている 1 つの操作は、イベントの発生です。これが小さなコレクションのパフォーマンス低下の原因でしょうか? これは、一部の機能をオフにすることで解決できるでしょうか? パフォーマンステストは次のとおりです。
そしてテストクラス:
出力は次のとおりです。
C5 とテストは両方ともリリース ビルドです。挿入の約 60 倍と並べ替えの約 6 倍の速度の比率は、テスト実行間で一貫しています。
編集: 上記のテストは VS 内から実行されました。VS の外部で実行した結果は次のとおりです。
繰り返しますが、挿入の場合は約 100 倍、並べ替えの場合は 2 倍の速度の比率は、テスト実行間で一貫しています。
私のプロジェクトには小さなコンテナの操作が多く含まれており、そのパフォーマンスが最も重要です。C5 コンテナーの機能は素晴らしく、ぜひ使用したいと思っていますが、現時点ではパフォーマンス上の理由から使用できません。この問題に関する洞察をいただければ幸いです。
EDIT2: Iridium の回答に従って、テストをループで実行し (コンテナーの作成を含むロジック全体をループに入れて、コンパイラーの最適化のトリックを除外します)、最初の 2 つの結果を破棄し、その後の 1000 の結果を平均しました。どうぞ:
現在、C5 の挿入は 76% 遅くなり、並べ替えは List と同等になりました。それは私の目的には十分です。Iridiumの回答を受け入れています。それでも、遅い挿入について誰かが洞察を持っている場合は、それを共有してください. 助けてくれてありがとう。
c# - 外部システムとの Microsoft Dynamics C5 の統合
現在、 Microsoft Dynamics C5を外部システムと統合するプロジェクトに取り組んでいます。つまり、Dynamics C5 でアイテムを作成するときに、そのアイテムを外部システム (機能豊富な API を備えている) で作成したいと考えています。C5部分からどのように管理できるか、C#を使用してC5データベースから直接アクセスできますか、またはC5にWebフックのような概念がありますか?
c# - C# で Hoey Shamos アルゴリズムを実装する
さて、現在のアルゴリズムから正しい情報を取得しています! ただし、700,000 個のポリゴンをチェックする必要があるため、処理速度が遅すぎます。前の問題は修正されました (私の Line2D intersectsWith メソッドは間違っていました)
今は私のボトルネックを特定することです!このアルゴリズムは O(nlog-n) であると想定されているため、はるかに高速になるはずです。私の intersectsWith メソッドはこれ以上速くなることはないように見えますが、間違っている場合に備えてコードを投稿します
編集: IComparable インターフェイスを追加
線分の交点を読み取るための私の方法。読みやすくするために、一部のコードは省略されています。
私のアルゴリズム実装の大部分は、リストがアルゴリズムにとって最速ではないことを認識していますが、インデックス作成が必要です!:
============================================
更新: 9 月 12 日: C5 から TreeSet を実装し、クラスに IComparable を実装しましたが、さらに遅くなりましたか? それが重要な場合、私はまだそれをインデックスに登録していますか?
http://www.itu.dk/research/c5/
TreeSet を使用したコード:
}
c# - 高速フィルタリング用の .net コレクション (ソートされたコレクション)
非常に遅いメソッドのプロファイリングを行っているときに、コレクションの検索とフィルタリングにラグがあることを発見しました。
このメソッドは、次のことを (順番に) 実行します。プロファイラーによると、時間の 80% はステップ 1 ~ 3 に費やされています。
- ソートされたコレクションをファイルから読み取り、Protobuf-net (v2) を使用して逆シリアル化します
.RangeFromTo()
ソートされたコレクションから、開始と終了の整数 (名前)に基づいてフィルタリングします- 同じソートされたコレクションから、コレクションの次の要素を取得します (name .
Right()
) - いくつかのタスクを実行します...
.RangeFromTo()
特定の範囲のフィルター。たとえば、次のようになります。
.Right()
コレクション内の要素を検索し、リスト内の次の要素を提供します。要素が存在しない場合は、右に数えて最も近い要素が表示されます。例えば:
現在、コレクションはSortedArray
C5 ( https://github.com/sestoft/C5/ ) から使用しています。使用できるより適切なコレクションはありますか?
注: ステップ 1. は、合計時間の約 30% かかります。代わりにリストを使用すると、protobuf の逆シリアル化にかかる時間が実際に 40% 短縮されます。SortedArray に挿入すると、コレクションはデータが既にソートされていることを認識せず、一連の作業を行っていると思います。理想的なコレクション (存在する場合) もそれをバイパスできる必要があります。
編集: 明確にするために、リストは約1000〜5000で、90kの異なるコレクションがあります! 問題のメソッドは、ビジネス タスクを実行するためにメモリ内のすべてのコレクションを読み込む必要があります。
編集 2: ここにいくつかのサンプル ベンチマークを追加しました。
https://github.com/cchanpromys/so_19188345
SortedArray
C5SortedSet
から .Netと比較します。これまでの結果は次のとおりです。
編集 3 これは私の予想外ですが、リストのカスタム実装になりました。
私が抱えていた問題は、SortedArray の Find 操作 (一般に) が O(Log(N)) を必要とする一方で、O(1) 操作にしたいということです。
また、リストは自然にソートされているため、リストの途中に追加することはありません。
そのため、内部インデクサー配列を持つリストを実装することになりました。たとえば、次のようになります。
例えば:
そう.Right(3)
でしょうlist[indexer[3]++]
。
コードはここにあります。
このタイプのリストがまだインターネットのどこかに実装されていないとは信じがたいです。できればライブラリを利用したいので、自分でリストを管理する必要はありません。
そのような実装はインターネット上に存在しますか?
c# - C# の Redis ライクな SortedSet
BCL からのSortedSet<T>
orとは異なり、Redis からの The ははるかに強力です。SortedDictionary<T>
Sorted Sets
member
辞書のように でアクセスできます- シーケンスは で決定され
score
、 とは異なるフィールドでmember
あり、同じ値を許可します - 許容可能な時間の複雑さで最小/最大値を取得できます
Dictionary
+を組み合わせSortedSet
て目標を達成したくありません。
私はC5ライブラリを見ていますが、どのクラスが自分に最適かよくわかりません。
更新: 最後に、私の要件に非常によく一致するこれを見つけました。
c# - 間隔でスケーリングされた値用の C# のインターフェイスはありますか?
有名な C# ライブラリC5のインターバル コレクション拡張を作成しています。インターフェイスは、同等のエンドポイント (無関係なメンバーを削除) で間隔を定義します。IInterval
間隔エンドポイントは、整数、日付、さらには文字列など、比較可能なものであれば何でもよいため、これは一般的にうまく機能します。
ただし、間隔の長さを計算できると便利な場合があります。間隔[3:5)
の期間は 2 で、間隔[1PM, 9PM)
の期間は 8 時間です。これは、要素の距離ではなく要素の順序のみを提供するため、比較対象では不可能です。たとえば、2 つの文字列間の距離を提供することは困難です。エンドポイント タイプは基本的に、間隔でスケーリングされた値でなければなりません。
のようなインターフェイスはありますか?これIComparable<T>
により、一般的にエンドポイントを比較できますが、2 つのエンドポイントを減算して期間を取得したり、低エンドポイントに期間を追加して、継承インターフェイスに使用できる高エンドポイントを取得したりすることもできます。IDurationInterval<T> : IInterval<T>
例えば?
またはより簡潔に: 間隔でスケーリングされた値のインターフェイスはありますか?