最近,我阅读了 Oracle Database 12 中的 UDF Pragma 优化方法。
我对它的工作原理非常感兴趣。我只在Oracle 文档中找到了非常简短的描述。
据我了解,PL/SQL 中的每个 Pragma 都是某种类似于C++ Pragma Directives的编译器指令(我在这里可能是错的)。
也许有人可以更详细地向我解释(或提供链接:))UDF Pragma 的内部机制是如何工作的?
我在处理图形数据时面临以下子任务:
我需要为具有来自“边界”索引数组的多个完全连接组件的图构造 COO 格式的图连接矩阵。
举个例子,给定数组
borders = [0, 2, 5]
Run Code Online (Sandbox Code Playgroud)
由此产生的 COO 矩阵应该是
coo_matrix = [[0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4],
[0, 1, 0, 1, 2, 3, 4, 2, 3, 4, 2, 3, 4]].
Run Code Online (Sandbox Code Playgroud)
也就是说,borders数组包含应形成完全连接的子图的节点范围(包括起始索引,排除结束索引)。
我想出了以下算法,但我怀疑性能可以提高:
import numpy as np
def get_coo(borders):
edge_list = []
for s, e in zip(borders, borders[1:]):
# create fully-connected subgraph
arr = np.arange(s, e)
t = np.array(np.meshgrid(arr, arr)).T.reshape(-1, 2)
t = t.T
edge_list.append(t) …Run Code Online (Sandbox Code Playgroud)