performance 相关问题

有关测量或改进代码和应用程​​序效率的问题。

Typo3 前端性能问题 - 页面加载缓慢

多年来,我们使用 Typo3 构建的网站在过去一周一直表现缓慢。 当我们尝试访问我们的网站时,加载时间非常慢,有时需要......

回答 1 投票 0

使用 Docker 和 Flask 进行机器学习的性能问题

我有一些应用于json文件的python3代码,代码中有一些神经网络和随机森林。我将代码放入 Docker 容器中,但注意到这些 ML 任务在没有

回答 2 投票 0

查找列中*值*之间的相关性(编辑:共现或一致比例)

编辑:当我说相关性时,可能应该说共现或一致比例)。 考虑一个数据集,其中每行都是一篮子 3 个水果。 库(数据.表) 篮子 <- data.table(fruit...

回答 2 投票 0

按极端性能影响排序

我在 SQL Server 中有一个复杂的查询,需要 70 秒才能完成 3,000,000 条记录。 当我删除两个 ORDER BY 子句时,只需要 0.5 秒即可完成。 选择前 100 名 行_...

回答 1 投票 0

数组与切片:访问速度

这个问题是关于访问数组和切片元素的速度,而不是关于将它们作为参数传递给函数的效率。 我希望数组比 m 中的切片更快...

回答 3 投票 0

XML 表上 PLSQL 查询的性能调整

我需要对 Oracle 数据库上的表执行一些查询。该表包含 XML 值。下面是我的 xml 结构的示例: 382010 我需要对 Oracle 数据库上的表执行一些查询。该表包含 XML 值。下面是我的 xml 结构示例: <Parent> <ParentId>382010</ParentId> <LastUpd>2023-03-01T22:59:10.456241</LastUpd> <UserId>0</UserId> <attrn>xxx</attrn> <Child> <ChildId>1</ChildId> <Attribute1 ID="1873" D="1466 Description">1466</Attribute1> <Attribute2 ID="1234" D="QWERTY Description" E="503" ED="Error 503 Description">QWERTY</Attribute2> <Attribute3 ID="4921" D="Other Description">YourValue</Attribute3> </Child> <Child> <ChildId>2</ChildId> <Attribute1 ID="1296" D="Some Description">1234</Attribute1> <Attribute2 ID="1234" D="Some Different Description">ABC</Attribute2> <Attribute3 ID="4921" D="Other Description" E="501" ED="Error 501 Description">MyValye</Attribute3> </Child> </Parent> 我需要选择所有有错误的孩子属性,可以通过“E”属性来识别(例如孩子1中的属性2和孩子2中的属性3)。 我对这种 XML 查询不是很专家,经过一番尝试后,我最终构建了下面的查询: SELECT EXTRACTVALUE (VALUE (X), '/Parent/UserId') AS USER_ID ,EXTRACTVALUE (VALUE (X), '/Parent/ParentId') AS PARENT_ID ,EXTRACTVALUE (VALUE (X), '/Parent/attrn') AS PARENT_ATTR_N_COL_NAME ,EXTRACTVALUE (VALUE (I), '/Child/ChildId') AS ROW_NUM ,CASE WHEN EXISTSNODE (VALUE (E), '/Attribute1/@E') = 1 THEN ATTR_ONE_COL_NAME WHEN EXISTSNODE (VALUE (E), '/Attribute2/@E') = 1 THEN ATTR_TWO_COL_NAME WHEN EXISTSNODE (VALUE (E), '/Attribute3/@E') = 1 THEN ATTR_THREE_COL_NAME END AS FIELD ,EXTRACTVALUE (VALUE(E), '/*/text()') as VALUE ,EXTRACTVALUE (VALUE(E), '/*/@E') as ERROR_CODE ,EXTRACTVALUE (VALUE(E), '/*/@ED') as ERROR_DESC FROM XML_TABLE X ,TABLE (XMLSEQUENCE (EXTRACT (VALUE (X), '/Parent/Child'))) I ,TABLE (XMLSEQUENCE (EXTRACT (VALUE (I), '/Child/*'))) E WHERE EXTRACTVALUE (VALUE (X), '/Parent/ParentId') = 382010 AND EXISTSNODE (VALUE (E), '/*/@E') = 1'; 当然,XML(然后是查询)实际上要大得多,我只是发布了一个简化的示例以使其更加综合。有时父节点包含数百个子节点,有时我需要查询数千个父节点,所以我想知道是否有一种方法可以优化上述查询并使其更快。 非常感谢:) 考虑用更新且更强大的 EXTRACTVALUE 替换已弃用的 XMLTABLE 函数。使用 XMLTABLE,所有解析都可以在一次查询中完成。然后,您可以使用该查询来执行 DML 操作,也可以循环遍历它以进行更多的过程控制。 下面的代码与您的结果并不完全匹配,但它足够接近,可以让您了解它是如何工作的。 select parent.user_id, parent.parent_id, parent.parent_attr_n_col_name, child.row_num, attribute.value, attribute.error_code, attribute.error_desc from xmltest x, xmltable ('/Parent' passing x.a columns user_id number path 'UserId', parent_id number path 'ParentId', parent_attr_n_col_name path 'attrn' ) parent, xmltable ('/Parent/Child' passing x.a columns row_num number path 'ChildId' ) child, xmltable ('/Parent/Child/*' passing x.a columns value varchar2(100) path 'text()', error_code varchar2(100) path '@E', error_desc varchar2(100) path '@ED' ) attribute where parent_id = 382010 and error_code is not null; 这是我用于测试代码的架构: --drop table xmltest; create table xmltest(a xmltype); insert into xmltest values(xmltype(' <Parent> <ParentId>382010</ParentId> <LastUpd>2023-03-01T22:59:10.456241</LastUpd> <UserId>0</UserId> <attrn>xxx</attrn> <Child> <ChildId>1</ChildId> <Attribute1 ID="1873" D="1466 Description">1466</Attribute1> <Attribute2 ID="1234" D="QWERTY Description" E="503" ED="Error 503 Description">QWERTY</Attribute2> <Attribute3 ID="4921" D="Other Description">YourValue</Attribute3> </Child> <Child> <ChildId>2</ChildId> <Attribute1 ID="1296" D="Some Description">1234</Attribute1> <Attribute2 ID="1234" D="Some Different Description">ABC</Attribute2> <Attribute3 ID="4921" D="Other Description" E="501" ED="Error 501 Description">MyValye</Attribute3> </Child> </Parent>')); 这是您的查询,根据之前的架构进行了一些对我有用的更改。我不确定你的表是如何设置的 - 使用 REF 而不是值? SELECT EXTRACTVALUE (X.a, '/Parent/UserId') AS USER_ID ,EXTRACTVALUE (X.a, '/Parent/ParentId') AS PARENT_ID ,EXTRACTVALUE (X.a, '/Parent/attrn') AS PARENT_ATTR_N_COL_NAME ,EXTRACTVALUE (I.column_value, '/Child/ChildId') AS ROW_NUM -- ,CASE -- WHEN EXISTSNODE (E.column_value, '/Attribute1/@E') = 1 THEN ATTR_ONE_COL_NAME -- WHEN EXISTSNODE (E.column_value, '/Attribute2/@E') = 1 THEN ATTR_TWO_COL_NAME -- WHEN EXISTSNODE (E.column_value, '/Attribute3/@E') = 1 THEN ATTR_THREE_COL_NAME -- END AS FIELD ,EXTRACTVALUE (E.column_value, '/*/text()') as VALUE ,EXTRACTVALUE (E.column_value, '/*/@E') as ERROR_CODE ,EXTRACTVALUE (E.column_value, '/*/@ED') as ERROR_DESC FROM xmltest X ,TABLE (XMLSEQUENCE (EXTRACT (X.a, '/Parent/Child'))) I ,TABLE (XMLSEQUENCE (EXTRACT (value(I), '/Child/*'))) E WHERE EXTRACTVALUE (X.a, '/Parent/ParentId') = 382010 AND EXISTSNODE (VALUE (E), '/*/@E') = '1';

回答 1 投票 0


Javascript 字符串长度是常数时间吗?

我对 JS 相当陌生,并且意识到长度被视为一种属性。但我收到一条评论,要求不要在循环中使用 str.length : 对于 (i=0; i 我对 JS 相当陌生,并且意识到长度被视为一种属性。但我收到一条评论,要求不要在循环中使用 str.length : for (i=0; i<str.length; i++){...} 对 var len = str.length; for (i=0; i<len; i++){...} 现在,我知道 str.length() 在 Java 中是恒定时间操作,因为长度存储为 String 类中的字段。但话又说回来,字符串在 Java 中是不可变的。 不过我不确定 JS 字符串。 str.length在JS中也能保证恒定时间吗?在网络上找不到讨论此问题的任何地方。 JavaScript 中的字符串也是不可变的。 length属性不需要在每次访问时都进行计算。 我创建了一个 jsperf 基准测试供您在此处查看。 您会注意到速度是相同的。 str.length在JS中也能保证恒定时间吗? 不,事实上 JavaScript 中没有任何运行时性能或复杂性保证。 但是,是的,可以预期它可以在恒定时间内访问,并且访问时不需要动态线性时间长度计算。 ECMAScript 规范还将 String .length 属性 描述为不可变的,并且在构造字符串时对其进行初始化。 在任何具有模拟字符串的语言中,无论是 Java、JavaScript、C# 还是其他语言,语言的创建者不为字符串提供“恒定时间”“长度”操作将是一个非常糟糕的做法。 由于字符串是不可变的,因此它的长度不能改变,因此所需要的只是在创建字符串对象内的某个字段时存储字符串的长度,并在调用“length”属性/方法时返回它。 这个问题似乎已经得到了很好的回答,但这里还有 2 美分,可能会有帮助。 如果字符串被循环内不同长度的内容覆盖,则使用 string.length 可能会在 for 循环中导致意外行为,例如: var k = "abcabcabc"; for(var i=0; i<k.length; i++){ k=k.slice(0,-1); console.log(k); } 将记录“abcabcab”,“abcabca”,...,“abca”,然后停止,因为长度正在变化。 当然,这可能是故意的,在这种情况下就去做吧(尽管可以说你应该使用 while 循环)。 长度是一个实例属性,它是常数时间 它必须实现一个给定长度的字符串,该字符串表示为连续的、以零结尾的 jschar 数组。它通过显式存储长度和指向以零结尾的数组的指针来实现此目的 这里显式存储的是指示符,表示它是恒定时间。 阅读 如何在 SpiderMonkey 中实现字符串 有关 Firefox 如何实现字符串的更多信息。 如果你有一个const,你可以使用类似的东西 const num= ''; console.log(num.length); and if you want to use a condition you can put something like this if(num.lenght > 0) { // YOUR CODE }

回答 6 投票 0

针对特定案例的 SQL 性能改进

我有两张桌子,如下所示: A 援助, 出价 日期1 日期2 1 B1 2021 年 1 月 1 日 2021 年 12 月 31 日 1 B1 2022 年 1 月 1 日 2022 年 12 月 31 日 1 B1 2023 年 1 月 1 日 2030 年 12 月 31 日 2 B2 2021 年 1 月 1 日 2030 年 12 月 31 日 3 B3 2024 年 1 月 1 日 2030 年 12 月 31 日 ...

回答 1 投票 0

面试题:替换两个数组在内存中的位置

给定两个连续的数组 A 和 B。它们看起来像 int AandB[] = {a1,a2,...,am,b1,b2,...,bn}; 你需要编写一个程序来交换数组 A 和 B 在内存中的顺序,...

回答 5 投票 0

替代 for 循环以获得更好的方法

我需要创建n次相同的记录。我从用户那里获取计数值,我需要为该次数创建相同的记录。 所以我按照下面的代码使用 For 循环来做到这一点,所以我...

回答 1 投票 0

如何安全地将字符串及其切片移动到闭包中?

我正在尝试创建一个在字符串切片中移动的“静态闭包”,确切地说是一个 Vec<&str>。 我最初的尝试是这样的: fn 主() { 让句子=“Foo到酒吧&

回答 2 投票 0

如何在 C++ 中快速安全地从文本文件中读取极长的行?

有一个 6.53 GiB 的大文本文件。它的每一行可以是数据行或注释行。注释行通常很短,不到 80 个字符,而数据行包含超过 200 万个字符

回答 3 投票 0

如何安全地将字符串及其切片安全地移动到闭包中?

我正在尝试创建一个在字符串切片中移动的“静态闭包”,确切地说是一个 Vec<&str>。 我最初的尝试是这样的: fn 主() { 让句子=“Foo到酒吧&

回答 1 投票 0

For 循环性能:将数组长度存储在变量中

考虑同一循环迭代的两个版本: 对于 (var i = 0; i < nodes.length; i++) { ... } and var len = nodes.length; for (var i = 0; i < len; i++) { ... } Is the latter ve...

回答 6 投票 0

在Python中使用asyncio时如何测量阻塞代码所花费的时间?

我目前正在迁移一些曾经阻塞的 Python 代码,以将 asyncio 与 async/await 结合使用。一次需要迁移很多代码,所以我更喜欢逐步迁移并有指标。与...

回答 3 投票 0

为什么这个 Postgresql UPDATE 语句即使不更新任何行也这么慢?

我看到计划进行全表扫描,但它从未执行,并且 UPDATE 无论如何都需要很长时间。为什么?? 这是解释输出 public.hone_cohortuser 更新(成本=3180.32..8951.5...

回答 1 投票 0

使用PDH获取GPU使用统计数据

我正在尝试获取一些有关 GPU 的统计数据。主要是我想获取总 VRAM 和使用量,以及 GPU 利用率(更喜欢 3d 核心,但会满足总使用量...

回答 1 投票 0

.NET 中属性的性能开销

我在某处读到,在类中拥有公共属性比拥有公共成员更好。 这仅仅是因为抽象和模块化吗?还有其他重要原因吗?

回答 9 投票 0

测试Java中二分查找的效率

我正在尝试测试java中大型排序数组的二分搜索的时间效率。 这是我正在使用的二分搜索方法,它接受搜索键和数组。 公共整数

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.