我正在使用.NET Core Test Explorer扩展在 VS Code 中运行XUnit test-ptoject 。我试图在测试期间写入输出,但没有任何效果。我尝试过以不同的方式编写输出,但在任何地方都看不到任何输出。有没有人在运行测试时设法以某种方式在 VS Code 中看到输出?
这是一个小示例类:
using Xunit;
using Xunit.Abstractions;
using System.Diagnostics;
public class TestClass
{
private ITestOutputHelper _output;
public TestClass(ITestOutputHelper output)
{
_output = output;
}
[Fact]
public void Test2()
{
_output.WriteLine("Hello");
Debug.WriteLine("Hello");
Console.WriteLine("Hello");
}
}
Run Code Online (Sandbox Code Playgroud) 我有这段代码完全可以实现我想要的功能,但是我不得不为每个组调用三次函数,这似乎效率很低。
library(data.table)
myRegr = function(x, y) {
regr = lm.fit(cbind(1, x), y)
coefs = regr$coef
k = coefs[[2]]
m = coefs[[1]]
r2 = 1 - var(regr$residuals) / var(y)
return (c(k = k, m = m, r2 = r2))
}
dt = data.table(a = c(0, 0, 0, 1, 1, 1),
x = c(12, 21, 15, 34, 32, 31),
y = c(3, 1, 6, 4, 2, 8))
result = dt[,list(minX = min(x),
minY = min(y),
k = myRegr(x, y)["k"],
m = myRegr(x, …Run Code Online (Sandbox Code Playgroud) 在我的着色器中,我有变量 b,需要确定它位于哪个范围内,然后将正确的值分配给变量 a。我最终得到了很多 if 语句:
float a = const1;
if (b >= 2.0 && b < 4.0) {
a = const2;
} else if (b >= 4.0 && b < 6.0) {
a = const3;
} else if (b >= 6.0 && b < 8.0) {
a = const4;
} else if (b >= 8.0) {
a = const5;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是这是否会导致性能问题(分支)以及如何优化它?我已经研究了 step 和 smoothstep 函数,但还没有找到实现此目的的好方法。
我需要一种比 lm() 方法更快的线性回归方法。我发现 lm.fit() 速度要快一些,但我想知道如何使用结果。例如使用此代码:
x = 1:5
y = 5:1
regr = lm.fit(as.matrix(x), y)
str(regr)
Run Code Online (Sandbox Code Playgroud)
输出:
List of 8
$ coefficients : Named num 0.636
..- attr(*, "names")= chr "x1"
$ residuals : num [1:5] 4.364 2.727 1.091 -0.545 -2.182
$ effects : Named num [1:5] -4.719 1.69 -0.465 -2.619 -4.774
..- attr(*, "names")= chr [1:5] "x1" "" "" "" ...
$ rank : int 1
$ fitted.values: num [1:5] 0.636 1.273 1.909 2.545 3.182
$ assign : NULL …Run Code Online (Sandbox Code Playgroud) 我收到此错误,但仅在按特定列分组时出现:
Arithmetic overflow error converting expression to data type int.
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么。这是导致它的查询(总和函数是罪魁祸首):
SELECT a.AtgardAvvattningId,
a.ObjektId,
sum(p.SlutLopLangd - p.StartLopLangd) As TotalLangd
FROM AtgardAvvattning a
INNER JOIN Objekt o ON o.ObjektId = a.ObjektId
INNER JOIN Position p ON p.AvvattningAtgardId = a.AtgardAvvattningId
INNER JOIN Vna v ON v.PositionId = p.PositionId
WHERE v.OID IN (...)
GROUP BY a.AtgardAvvattningId, a.ObjektId, o.AtgardsDatum
ORDER BY a.ObjektId
Run Code Online (Sandbox Code Playgroud)
p.SlutLopLangd 和 p.StartLopLangd 都是 int 列。如果我在求和之前将值转换为 bigint,它会起作用:
sum(CONVERT(bigint, p.SlutLopLangd - p.StartLopLangd)) As TotalLangd
Run Code Online (Sandbox Code Playgroud)
给出这个结果:
| AtgardAvvattningId | 对象ID | 总面积 |
|---|---|---|
| 直流9... | 9B2... | 25684 |
| 儿童早期发展... | 9B2... … |