为了简单translate
起见,最好在不占用大量CPU的前提下使用该功能,或者regexp_replace
该走的路要走吗?
我认为您正在进行简单的优化。regexp表达式的计算是如此昂贵,以至于结果被缓存起来,希望将来可以再次使用。如果您实际使用不同的字符串进行转换,您会发现适度的翻译自然是更快的,因为它是其专门功能。
这是我的示例,在上运行11.1.0.7.0
:
SQL> DECLARE
2 TYPE t IS TABLE OF VARCHAR2(4000);
3 l t;
4 l_level NUMBER := 1000;
5 l_time TIMESTAMP;
6 l_char VARCHAR2(4000);
7 BEGIN
8 -- init
9 EXECUTE IMMEDIATE 'ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=2';
10 SELECT dbms_random.STRING('p', 2000)
11 BULK COLLECT
12 INTO l FROM dual
13 CONNECT BY LEVEL <= l_level;
14 -- regex
15 l_time := systimestamp;
16 FOR i IN 1 .. l.count LOOP
17 l_char := regexp_replace(l(i), '[]()[]', '-', 1, 0);
18 END LOOP;
19 dbms_output.put_line('regex :' || (systimestamp - l_time));
20 -- tranlate
21 l_time := systimestamp;
22 FOR i IN 1 .. l.count LOOP
23 l_char := translate(l(i), '()[]', '----');
24 END LOOP;
25 dbms_output.put_line('translate :' || (systimestamp - l_time));
26 END;
27 /
regex :+000000000 00:00:00.979305000
translate :+000000000 00:00:00.238773000
PL/SQL procedure successfully completed
于11.2.0.3.0
:
regex :+000000000 00:00:00.617290000
translate :+000000000 00:00:00.138205000
结论:总的来说,我怀疑translate
会赢。
问题内容: 我试图弄清楚当我们使用nio FileChannel和normal FileInputStream/FileOuputStream来读写文件到文件系统时,性能(或优势)是否存在任何差异。我观察到,在我的机器上,两者的性能都相同,而且FileChannel速度也慢了很多倍。我能否请你比较这两种方法的更多详细信息。这是我使用的代码,正在测试的文件在左右350MB。如果我不考虑随机访问或其他
问题内容: 我们有一个本机应用程序,它使用GPU(OpenCL)通过一种特定的方法处理大数据,并且运行得很好,没有问题。该项目的一部分(网络和分发)由进行开发,我们只需要调用本机应用程序/库即可。 我们试图使用类将其称为独立的外部过程。问题是我们无法控制应用程序(事件,处理程序,线程等)。我们还尝试将C代码转换为Java代码,但是性能下降了。除了将本机代码作为进程运行之外,我还在考虑JNA和JNI
问题内容: 似乎在这么晚的时候这样做很疯狂,但是… 我正在使用Rocket Software UniVerse源和SQL目标重建一些ETL基础结构。旧的目标平台是Windows Server 2003上的SQL 2000,新的平台是Windows Server 2012上的SQL2012。在两种情况下,都使用ODBC驱动程序连接到源。一切似乎都可以在新平台上正常运行,但包的执行时间却成倍降低。例如
问题内容: 包括官方Redis文档在内的许多资料都指出,由于可能会阻塞,在生产环境中使用该命令是一个坏主意。如果已知数据集的大致大小,相对于而言,是否有任何优势? 例如,考虑一个数据库,该数据库最多具有100个以下形式的键:其中,是整数。如果要检索所有这些,可以使用命令。这会比使用慢得多吗?还是在这种情况下这两个命令基本相同?可以说这是更好的选择,因为它可以防止出现意外的大集合返回的情况,这是否更
问题内容: 首先,我了解90%的应用程序中的性能差异完全无关紧要,但是我只需要知道哪个是更快的构造即可。那… 当前网上可用的信息令人困惑。许多人说foreach不好,但是从技术上讲应该更快,因为它假定可以简化使用迭代器编写数组遍历的过程。再次被认为是更快的迭代器,但是在PHP中显然还很慢(或者这不是PHP吗?)。我说的是数组函数:next()prev()reset()等,如果它们甚至是函数,而不是
概览 首先我们了解一下 YODAOS 的运行时:YODAOS 基于 ShadowNode 它采用事件驱动、非阻塞I/O模型;在设计之初,ShadowNode 的接口与 Node.js 兼容,因此在大部分场景下,开发者可以像 Node.js 一样使用 ShadowNode,了解这些有利于开发者更快速的进行 YODAOS 上的应用开发。 YODAOS 开发应用时,需要关注应用的性能与稳定性,包括但不限