小编use*_*613的帖子

三元运算符的速度是if-else块的两倍?

我读的是无处不在三元运营商应该是比快,或至少一样的,它的等效if- else块.

但是,我做了以下测试,发现事实并非如此:

Random r = new Random();
int[] array = new int[20000000];
for(int i = 0; i < array.Length; i++)
{
    array[i] = r.Next(int.MinValue, int.MaxValue);
}
Array.Sort(array);

long value = 0;
DateTime begin = DateTime.UtcNow;

foreach (int i in array)
{
    if (i > 0)
    {
        value += 2;
    }
    else
    {
        value += 3;
    }
    // if-else block above takes on average 85 ms

    // OR I can use a ternary operator:
    // value += …
Run Code Online (Sandbox Code Playgroud)

c# performance conditional-operator

245
推荐指数
6
解决办法
4万
查看次数

如何切换主题(夜间模式)而不重新启动活动?

我制作了一些支持多个主题的应用程序,但是当用户切换主题时我总是不得不重新启动应用程序,因为setTheme()之前需要调用它setContentView().

我没关系,直到我发现这个应用程序.它可以在两个主题之间无缝切换,也可以使用过渡/动画切换!

在此输入图像描述

请给我一些关于如何实现(以及动画)的提示.谢谢!

android android-theme

34
推荐指数
4
解决办法
1万
查看次数

大O,总结一系列n个数字的复杂性是多少?

我一直认为复杂性:

1 + 2 + 3 + ... + n 是O(n),并且将两个n乘n个矩阵求和为O(n ^ 2).

但是今天我从教科书中读到"通过前n个整数之和的公式,这是n(n + 1)/ 2",然后是:(1/2)n ^ 2 +(1/2) n,因此O(n ^ 2).

我在这里错过了什么?

algorithm optimization performance complexity-theory big-o

25
推荐指数
3
解决办法
4万
查看次数

为什么"\n"在Windows上提供了一个新行?

Windows上的换行标记应该是CR+LF在Unix上,它只是LF.

因此,当我使用类似的东西时Console.Write("line1\nline2");,为什么它会"正常"工作并给我两行?我希望这\n不起作用,只有一个组合\r\n可行.

.net c# windows newline

22
推荐指数
3
解决办法
4万
查看次数

Autohotkey,如何不按消息键?

在Autohotkey中,我希望按下按键以实现其原始目的,同时执行一些附加功能.

例如,在按下"^ a"时,我希望"^ a"正常运行(例如Select All),然后是send另一个"word".

我试着重复按下的键,即以下内容:

^a::
send, ^a
send, word
return
Run Code Online (Sandbox Code Playgroud)

但是,如果我再次发送触发键(^ a),该功能将变为"递归"并且永远不会结束.

autohotkey

16
推荐指数
2
解决办法
1万
查看次数

DataOutputStream()VS DataOutputStream(new BufferedOutputStream())

Java Tutorials中的代码显示了使用DataOutputStream类和DataInputStream类的示例.

代码片段如下所示:

//..
out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dataFile)));
//..
in = new DataInputStream(new BufferedInputStream(new FileInputStream(dataFile)));
//..
Run Code Online (Sandbox Code Playgroud)

我想知道为什么BufferedOutputStream在我们创建一个新的时候需要创建一个新的DataOutputStream

这不是多余的,因为这个替代方案也有效吗?:new DataOutputStream(new FileOutputStream(dataFile));

如此页面声称的那样,DataStreams已经提供了缓冲文件输出字节流.那么"双缓冲"真的需要吗?

我已经修改了两行代码(输出和输入)的收走了BufferedOutputStream,并BufferedInputStream和一切似乎都工作得很好,所以我想知道什么是的目的BufferedOutputStreamBufferedInputStream

java io

10
推荐指数
1
解决办法
9250
查看次数

如何在API 19(kitkat)上设置精确的重复警报?

从API 19开始,setRepeating()工作方式与setInexactRepeating().什么是设置精确重复警报的新方法?

即API 19版本的旧版本是setRepeating()什么?您能否提供一个在KitKat每天早上7:30(每天重复)设置闹钟的示例?

android alarmmanager

9
推荐指数
1
解决办法
3343
查看次数

检查string.length == 0是否仍然比检查字符串==""更快?

我在大约7 - 8年前从一本编程书中读到,检查string.length == 0是检查空字符串的更快方法.我想知道今天这个陈述是否仍然适用(或者它是否真的存在),因为我个人认为string == ""更直接,更具可读性.我主要处理.NET和java等高级语言.

.net java string performance

8
推荐指数
3
解决办法
2万
查看次数

Flutter - 如何使 TextField 宽度适合其文本(“包装内容”)

我正在尝试使用一些代表选定联系人的芯片来执行“搜索联系人列表”功能,并且用户可以在文本字段中输入以过滤和添加更多联系人:

想要的结果

这是一个做Wrap小部件,包装列表Chip窗口小部件,并结束与一个列表Container一个的TextField小部件。

我试过的:

如果我不设置 的宽度TextField,它默认占据一整行。为了清楚起见,让我们将其设为红色:

默认宽度为整行

我不想要整行,所以我将它设置为一个小的值,50。但是如果文本很长,这不起作用:

固定宽度隐藏长文本

题:

是否可以将TextField起点变小,并在需要时自动扩展到整条线?我试过“minWidth”,BoxConstraint但由于TextField默认为整行,所以不起作用。在这里使用 Wrap 和 TextField 是正确的方法吗?

flutter

8
推荐指数
1
解决办法
5354
查看次数

为什么 Dart 中的 HashSet&lt;int&gt; 比 HashSet&lt;String&gt; 慢很多?

我注意到HashSet<int>在开发 Flutter 项目时执行速度非常慢。我在 a 中有大约 20,000 个整数Set,检查set.contains()花了很长时间。但是当我使用toString()将所有项目转换为字符串时,它的执行速度快了 1000 倍。

然后,我尝试使用 1000 万个随机整数创建一个最小的可重现代码,但无法重现该问题。事实证明,这些数据的某些特殊之处导致了速度极其缓慢。我在这个问题的末尾附上了测试代码(和数据)。

如何重现:

首先,单击“添加整数”按钮将 14790 个整数添加到集合中。然后单击“query int”(runs set.contains(123))和“query string”(runs set.contains('123'))。观察到: 1. 两个操作都超级慢;2. int版本比string版本慢。图片:

综合测试

然后点击“清除项目”,再点击“添加字符串”来添加toString()数据的版本。然后再次单击“query int”和“query string”,注意它变得快了多少。图片:

字符串测试

最后,单击“添加整数”和“添加字符串”以创建混合集(条目数量是两倍)。观察到该版本的查询时间减少了一半int,好像更快的字符串有助于“淡化”问题。图片:

int 字符串混合测试

我有几个朋友在不同的机器(intel i5、apple M1、snapdragon)上运行相同的测试代码,时间不同但结论是相同的。

这里没有答案:

以下是我考虑过的一些事情,但它们无法解释更多测试中发生的情况。

  1. 也许int需要拳击,但string已经是一个物体了?

这可能不是这里的问题。对于 100 万个随机生成的值,整数的执行速度比字符串更快。

  1. string是不可变的,因此它们的哈希值可以被缓存?

我不知道它们是否被缓存,但这并不能解释使用 100 万个随机生成的值观察到的结果。

  1. inthash导致了很多冲突?

我尝试打印.hashCode数据集中的所有整数和字符串,并验证它们都是唯一的。

测试代码:

对于 StackOverflow 来说,包含数据的完整测试代码太长,我将其放在这里https://pastebin.com/raw/4fm2hKQB

所以是的,我迷路了,如果有人能帮助我理解发生了什么,我将不胜感激!

performance dart flutter

7
推荐指数
2
解决办法
888
查看次数