相关疑难解决方法(0)

为什么处理排序数组比处理未排序数组更快?

这是一段看似非常特殊的C++代码.出于某种奇怪的原因,奇迹般地对数据进行排序使得代码几乎快了六倍.

#include <algorithm>
#include <ctime>
#include <iostream>

int main()
{
    // Generate data
    const unsigned arraySize = 32768;
    int data[arraySize];

    for (unsigned c = 0; c < arraySize; ++c)
        data[c] = std::rand() % 256;

    // !!! With this, the next loop runs faster.
    std::sort(data, data + arraySize);

    // Test
    clock_t start = clock();
    long long sum = 0;

    for (unsigned i = 0; i < 100000; ++i)
    {
        // Primary loop
        for (unsigned c = 0; c < arraySize; ++c) …
Run Code Online (Sandbox Code Playgroud)

c++ java optimization performance branch-prediction

2万
推荐指数
27
解决办法
142万
查看次数

并且在VBA中也是/ OrElse

我正在尝试通过执行以下操作在Excel宏中使用"和"进行惰性评估:

If Not myObject Is Nothing *And* myObject.test() Then
    'do something'
Else
    'do something else'
End If
Run Code Online (Sandbox Code Playgroud)

我知道在VB.NET中存在懒惰的评估AndAlso,OrElse但在VBA中找不到类似的东西.如果VBA中不存在惰性求值,那么构造代码的最佳方法是什么,以便评估我期望的方式?

vb.net vba

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

如何在VBA中评估Or语句?

我只是想知道Or条件语句如何在VBA/VB6中工作.基本上,如果我们有If A Or B Then,布尔表达式的评估顺序是什么?如果A为真,B还会被评估吗?

excel vba if-statement excel-vba conditional-statements

7
推荐指数
1
解决办法
108
查看次数

嵌套的"if"和使用"if x and y and z and .."之间的速度有什么区别吗?

我有一个简短的问题.VBA之间有什么不同吗?

if x1 and x2 and x3 and ... and x10 then
    foo
end if
Run Code Online (Sandbox Code Playgroud)

if x1 then
  if x2 then
    if x3 then
      ...
      foo
    end if
  end if
end if
Run Code Online (Sandbox Code Playgroud)

关于速度?

更具体地说:我有10列数据,需要逐行比较数据库中的重复数据(SELECT DISTINCT之类的东西在这种情况下不起作用).

我可以想象,那是用的

x1 = recordset.fields("Field1").value
if x1 then
  x2 = recordset.fields("Field2").value
  if x2 then
    x3 = recordset.fields("Field3").value
    if x3 then
      ...
      foo
    end if
  end if
end if
Run Code Online (Sandbox Code Playgroud)

会快于

x1 = recordset.fields("Field1").value
x2 = recordset.fields("Field2").value
...
if x1 and x2 and x3 and ... and …
Run Code Online (Sandbox Code Playgroud)

ms-access vba if-statement flow-control

3
推荐指数
1
解决办法
236
查看次数

哪个if语句在VBA中执行得更快?

在VBA中,以下哪个if语句表现更好?

上下文:我正在迭代查找条目的工作表.

if [condition1] and [condition2] and [condition3] then
    *do something*
end if
Run Code Online (Sandbox Code Playgroud)

要么

if [condition1] then
    if [condition2] then
        if [condition3] then
            *do something*
        end if
    end if
end if
Run Code Online (Sandbox Code Playgroud)

我的直觉说第二个语句,因为它只需要在进行下一次迭代之前检查一个初始条件,但是这样吗?还有,有更好的方法吗?

excel vba excel-vba

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

与LIKE声明相反

我在使If NOT Like代码工作时遇到了一些问题.

下面是编码的一部分.似乎编码正在带来第二个记录,在该字段中有铁路,但没有一个记录在那之前或之后有铁路.

实际上,它应该在该领域的任何地方带来不包含铁路的记录,但它也不会这样做.任何反馈都表示赞赏.

Set rngData = Intersect(wsData.UsedRange, wsData.Range("A:K"))

    j = 1
    rngData.Rows(1).Copy Destination:=wsGalreq.Cells(j, 1)

    For i = 2 To rngData.Rows.Count
        If Not rngData.Cells(i, 11).Value = "SUPPLIER A" And rngData.Cells(i, 6).Value Like "*RAIL*" Then
            j = j + 1
            rngData.Rows(i).Copy Destination:=wsGalreq.Cells(j, 1)
        End If
    Next
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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

VBA - 为什么IsNumeric无法正确评估

我有以下代码VBA来评估变量lngPNumber以将"正确"值发送到WorksheetFunction.vLookup函数:

Dim lngPNumber As Variant
lngPNumber = ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Value
        If IsNumeric(lngPNumber) = False Or CDbl(lngPNumber) <> Round(CDbl(lngPNumber)) Then
        lngPNumber = CStr(ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Text)
        End If
Run Code Online (Sandbox Code Playgroud)

lngPNumber可:

  • 整数值(fi 4111)
  • 浮点值(41.111111)
  • 或者只是一个字符串值(通常是"xxxx",但也可以用"asdasd","dasdsadasd"等字符串填充......)

在最后两种情况下,我想发送单元格文本而不是单元格值lngPNumber获取的位置.

但是,如果值是类似于列表中最后一个示例的字符串,则会出现Type Missmatch错误.有帮助吗?

excel vba excel-vba

0
推荐指数
1
解决办法
64
查看次数