Ok folks you asked for it......
My testing results on a drawing with .....
one block "block1" , 10000 insertions
three attributes, each with a value
2500 blocks had one value with an "e" or "E"
(attlay)
2.1870 seconds
(gbwa)
2.0641 seconds
VBA code below
0.5939 seconds
BUWAHAHAHAHAHAHAHAHAHA
Sub ChBlLayer()
Dim SS As AcadSelectionSet
Dim ATTS As Variant
Dim Code As Variant
Dim Data As Variant
Dim GCode(1) As Integer
Dim GData(1) As Variant
Dim BRef As AcadBlockReference
Dim STime As Variant
Dim ETime As Variant
STime = TimeIt
GData(0) = "INSERT"
GData(1) = 1
GCode(0) = 0
GCode(1) = 66
Code = GCode
Data = GData
Set SS = ThisDrawing.SelectionSets.Add("test2")
SS.Select acSelectionSetAll, , , Code, Data
For Each BRef In SS
ATTS = BRef.GetAttributes
For X = 0 To UBound(ATTS)
If InStr(1, ATTS(X).TextString, "e", 1) > 0 Then
BRef.Layer = "0" 'put me on this layer
X = UBound(ATTS) + 1
End If
Next X
Next BRef
SS.Delete
ETime = TimeIt
MsgBox ETime - STime & " Seconds"
End Sub
Function TimeIt()
Dim CTIME As Variant
CTIME = ThisDrawing.GetVariable("MILLISECS")
TimeIt = CTIME / 1000
End Function