问题标签 [batching]

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 投票
1 回答
289 浏览

opengl - OpenGL 原始排序与原始批处理

我一直在阅读一些基于 OpenGL 的架构如何管理它们的对象,以便根据我的应用程序的特定需求创建我自己的轻量级引擎(请不要回答“为什么不直接使用这个现有产品”)。我一直在研究的一种架构是 Qt 的 Quick Scene Graph,虽然它很有意义,但我对某些事情感到困惑。

根据他们的文档,不透明基元是从前到后排序的,非透明基元是从后到前排序的。顺序是通过希望消除处理出现在其他像素后面的像素的需要来进行早期 z-killing。这似乎是一种相当普遍的做法,我明白了。这说得通。

他们的文档还讨论了如何将使用相同材质的项目组合在一起以减少状态更改的次数。也就是说,一个共享着色器程序可以绑定一次,然后使用同一个着色器渲染多个项目。这也是有道理的,我很擅长。

我不明白这两种技术如何协同工作。假设我有 3 种不同的材料(为了简化起见,它们都是不透明的)和 100 个项目,每个项目都使用这 3 种材料中的一种,那么理论上我可以根据这些材料创建 3 个批次。但是如果我的 100 个项目在场景中的不同深度怎么办?然后我是否需要创建 3 个以上的批次,以便我可以正确排序项目并将它们从前到后呈现?

根据我对 Ogre 3D 等其他引擎的了解,这两种技术似乎都经常使用,我只是不明白它们是如何一起使用的。

0 投票
0 回答
71 浏览

java - Hibernate:单表继承是否禁用批处理?

问题

我发现在调用StatelessSession#insert()时,hibernate 的批处理不适用于以下两个类。(即为每个调用创建了准备好的语句)。

父实体

子实体

但是在我将实体更改为以下内容后,hibernate 开始按预期使用批处理:

父实体 - 新

子实体 - 新

问题

单表继承是否禁用休眠批处理?该文档仅说应使用“身份标识符生成器”禁用它,但我明确设置了 ID。我没有找到任何其他关于此类问题的参考。

0 投票
1 回答
255 浏览

java - 在 HBase 中批量删除多少次?

我正在编写一份作业来扫描 HBase 表并删除某些行。我读过我应该批量删除并定期清除它们,而不是处理每个单独的删除或一次处理整个批次。我现在的代码相当于..

但是,我没有真正的理由选择 1000 作为最大批量大小。我找不到任何暗示一次应该批处理多少操作的资源。对此有什么指导方针吗?直觉上,似乎根本不批处理东西,或者只做非常小的批处理,效率会很低。看起来非常大的批量也很糟糕。是否存在效率最佳点?

0 投票
0 回答
981 浏览

php - 如何使用 Google Analytics 执行 PHP 批处理请求

我必须同时向 Google Analytics 发出 40 个请求。但是我很难理解以下 GA 到 PHP 的批处理解释(链接)。我了解目的,但是如何将其转换为 PHP?我做一个通常的 cURL 请求没有问题,但是当几个请求“嵌套”在一个顶级请求中时,它会是什么样子,就像这里?cURL 可以吗?我还是 PHP 新手。

如果没有批处理,执行每个请求需要很长时间。

谷歌示例:

POST /批处理 HTTP/1.1

主机:www.googleapis.com

内容长度:731

内容类型:多部分/混合;边界=batch_0123456789

授权:承载 ya29.5gFZooleNoSpGqYOOF0eFciUGz1x26k9GagZoW7HJCogWlCoNOotxlZPo7bDbwo1ykDq

--batch_0123456789

内容类型:应用程序/http

内容 ID:

内容传输编码:二进制

发布 [https]://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/customDimensions

内容类型:应用程序/json

内容长度:68

{“名称”:“活动组”,“范围”:“SESSION”,“活动”:true }

--batch_0123456789

内容类型:应用程序/http

内容 ID:

内容传输编码:二进制

发布 [https]://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/customDimensions

内容类型:应用程序/json

内容长度:67

{“名称”:“活动类型”,“范围”:“SESSION”,“活动”:true }

--batch_0123456789--

0 投票
1 回答
250 浏览

c# - OracleDataClientBatchingBatcherFactory 引发空引用异常

我们正在使用 NHibernate 版本 4.0.4.4000 并使用 FluentNHibernate 版本 2.0.3.0 对其进行配置。

我正在尝试使用 Oracle 数据客户端批处理批处理器工厂 (OracleDataClientBatchingBatcherFactory) 在 Oracle 连接上设置批处理,并使用以下代码创建 NHConfiguration:

在会话刷新时获得以下异常:

看起来 SetArrayBindCount 方法正在使用反射在 OracleCommand 中设置 ArrayBindCount 属性。此方法引发空引用异常。

有没有其他人遇到过同样的问题?我是否遗漏了什么或者它是 OracleDataClientBatchingBatcher 中的错误?

当我使用 SQL Client Batching Batcher Factory (SqlClientBatchingBatcherFactory) 时没有遇到这个问题

任何帮助将不胜感激,因为这目前正在阻止我们。

问题来源:https ://groups.google.com/forum/#%21topic/nhusers/-rzStjZSxmI

0 投票
2 回答
857 浏览

unity3d - 为什么当我访问渲染器时批次计数会增加?

我的场景中有 81 个游戏对象。当我玩 3 批次时,统计数据很健康。但是当我在脚本中访问渲染器时,每个对象的批次计数都会增加。在我访问所有对象的渲染器后,情况变得很糟糕。

之前:批次:3 | 通过批处理保存:80 | FPS:近 400

之后:批次:83 | 通过批处理保存:0 | 帧数:约 200

代码: transform.GetComponent<Renderer>().material.color = Color32.Lerp(start_color, target_color,t);

我觉得这个问题很有道理。“为什么 Unity3D 没有在访问渲染器之前对对象进行批处理?为什么即使在我对游戏对象进行了工作之后,批处理计数仍然有效?”


更新: 1. 即使我只是简单地访问渲染器而不更改它,它也会花费一批并且永远不会减少。

  1. 我通过 lerp 改变颜色来缩放对象。在检查器中,材质被重命名为 mat(instance)。

  2. 我尝试使用 sharedMaterial。现在批次计数稳定为 3,但所有 81 个对象都变为相同的颜色。故事: 81 可以更新为具有不同灰度的低、中、高状态。我需要在更新时对它们进行分类。

0 投票
0 回答
1013 浏览

unity3d - Unity3D:懒惰的动态批处理和为什么实例化的材料永远保持实例化

我需要减少批次数。Unity 的出色功能“动态批处理”让我感到厌烦:D 我的游戏包含许多较小的对象,这些对象在玩家互动时会不断变化。

  1. 即使我将所需数量的材料中的一种分配给对象,动态批处理也不能很好地工作。游戏从批次计数为“3”开始,其中 81 个对象使用相同的材​​料。如果我更改一个对象,它会显示“4”个批次,这是可以的,因为有 80(mat01)和 1(mat02)。当我将另一个对象更改为 mat02 时,计数应该保持为“4”对吗?但它不是!它一直在增加,直到 mat02 变为多数,并且当所有内容都更改为 mat02 时批次计数达到“3”。为什么要等待人群 Unity?
  2. 不管 Unity 的这种习惯如何,我决定在材质颜色中使用一些 lerp。然后明显的事情发生了。如果我更改对象材质的属性,该材质将变为“mat01(instanced)”并被永久实例化,这将永远花费一批。如果我分配 mat02,它会显示“mat02(instanced)”。

感觉像是一种惩罚。“不要碰我的材料……我会永远让你付出代价的!!!” 问题是什么?是的......我改变了那个材料。现在我分配一个全新的材料你很难将这个可怜的家伙(游戏对象)分配回同伴(批次)???

我还阅读了动态批处理不能通过脚本进行修改。

我会不断更新故事,直到我达到我想要的为止。伙计们请指出我在哪里做错了。

更新:1 .关于着色材料的精彩解释这个链接教会了我很多东西,这些行给我留下了深刻的印象,“对材料的任何更改,例如设置材料的颜色,都会产生一个新的材料实例,因此该对象将不再批处理。但是使用顶点颜色可以在不中断批处理的情况下更改对象的颜色。我会试试这个并更新。

  1. 我通过使用顶点着色解决了这个问题。性能看起来不错。我完全实现了我所需要的。
0 投票
1 回答
557 浏览

opengl - 如何将多个四边形批处理成一个巨大的缓冲区

我正在尝试将多个精灵批处理到一个大缓冲区中,但我遇到了一些技术难题。我想我没有正确设置我的 vbo 大小,但让我们看看。

这目前只渲染 1 个彩色四边形,尽管我想渲染两个。

这就是我设置我的vbo的方式。

这是精灵对象。

由于我试图绘制精灵,我手动创建它们是这样的:精灵函数原型:

我还创建了一堆临时结构来为每个精灵进行计算,但如果可能的话,我想简化一下:

这是渲染循环:

目前这只画了 1 个四边形,颜色正确,我的日志输出看起来还不错,所以我不确定我哪里出错了。

这是上述代码的示例输出。

这是运行此代码的一些示例输出:

图片:在此处输入图像描述

我是否错误地设置了我的 opengl 缓冲区?为什么它只渲染一个四边形?特别是当输出显示 v_buff 数据结构中两个四边形的顶点信息和颜色信息时?

我不明白为什么我只渲染 1 个四边形。

0 投票
1 回答
2128 浏览

ruby-on-rails - 使用 ActiveRecord::Base.connection.execute 时的批处理

我正忙于编写一个迁移,这将使我们能够将我们的 yamler 从 Syck 迁移到 Psych,并最终将我们的项目升级到 ruby​​ 2。不过,这种迁移将非常耗费资源,因此我将需要使用分块。

我编写了以下方法来确认我计划使用的迁移结果产生了预期的结果,并且可以在不停机的情况下完成。为了避免活动记录自动执行序列化,我需要使用ActiveRecord::Base.connection.execute

我描述转换的方法如下

使用时如何使用批处理 ActiveRecord::Base.connection.execute

为了完整起见,我的更新功能如下

我从http://fossies.org/linux/openproject/db/migrate/migration_utils/legacy_yamler.rb得到的

0 投票
1 回答
1221 浏览

azure - 如何让 Azure Webjob 处理多个队列消息?

在 Azure 辅助角色中,可以创建处理消息列表的批处理作业。我想知道 Azure WebJobs 是否有类似的东西?

目前,您可以从队列中触发 webjob,如下所示:

有什么方法可以提取和处理消息列表吗?